Как я могу удалить потерянные ключи в таблицах базы данных WordPress?

10

В частности в табл wp_options. После почти 2-х лет производства блогов это, кажется, сильно возросло, и я не знаю, сколько там дерьма.

Знаете ли вы плагин, который работает с WordPress 3.0 или безопасный запрос для запуска для поиска потерянных ключей / строк?

селезень
источник

Ответы:

7

Нет запроса, который будет на 100% уверен, что удалит все неиспользованное и не удалит эти вещи, потому что любая тема или плагин может добавить опции в wp_optionsтаблицу. Тем не менее, с небольшими усилиями вы можете получить довольно хорошее представление о том, что не используется, а затем вручную решить, какие из этих вещей удалить, а какие нет.

Вы можете временно поместить следующий код в functions.phpфайл вашей темы, а затем посетить каждую (тип) страницу вашего общедоступного сайта и, что более важно, все страницы администратора в консоли администратора. Как только вы это сделаете, вы можете открыть свою wp_optionsтаблицу и посмотреть на поле use_count(добавленное с помощью кода ниже), чтобы увидеть, какие опции имеют use_countравные нулю (счетчик использования в большинстве случаев не имеет смысла, за исключением того, что что-либо больше 1 было прочитано или обновлено). хотя бы один раз, так как вы добавили этот код.)

global $wpdb;
header('Content-Type:text/plain');
$results = $wpdb->get_results("SHOW COLUMNS FROM wp_options WHERE Field='use_count'");
if (count($results)==0) {
    $wpdb->query("ALTER TABLE {$wpdb->options} ADD COLUMN use_count int UNSIGNED NOT NULL DEFAULT '0' AFTER autoload");
}

add_action('all','monitor_get_option_usage');
function monitor_get_option_usage($filter){
    if (preg_match('#^option_(.*)$#',$filter)) {
        increment_option_use_count(substr($filter,7));
    }
}
add_action('updated_option','monitor_update_option_usage');
function monitor_update_option_usage($option){
    increment_option_use_count($option);
}
function increment_option_use_count($option) {
    global $wpdb;
    $wpdb->query("UPDATE {$wpdb->options} SET use_count = use_count + 1 WHERE option_name = '$option'");
}

Благодаря этому вы, вероятно, сможете определить параметры, связанные с давно ушедшими плагинами, бывшими темами и даже вашими собственными настройками, которые вы добавили ранее, но больше не используете. Экспортируйте их все в резервную копию (на всякий случай), а затем удалите те, которые вам удобно удалять. Когда вы закончите, вы можете удалить это use_countполе (если хотите, не повредит его присутствию), а также удалить приведенный выше код из вашего functions.phpфайла.

Хотя это все еще не идеально, это намного лучше, чем ничего. Надеюсь, это поможет?

MikeSchinkel
источник
Я настоятельно рекомендую для этого использовать memcached / incr () вместо потенциально большого количества записей в БД.
Дени де Бернарди
3
@Denis - поскольку memcached требует расширенной настройки сервера, что даже невозможно на общем сервере, где размещается большинство сайтов WordPress, и поскольку это диагностическая процедура разовая или случайная, я не понимаю, почему вы подчеркиваете необходимость для memcached для этого варианта использования ? Может быть, я чего-то упускаю, можете ли вы рассказать, почему кто-то, кому нужно перейти на VPS или выделенный сервер и узнать, как или заставить кого-то настроить memcached, должен сделать это просто, чтобы избежать большого количества обращений к базе данных для редко использованный режим обслуживания?
MikeSchinkel
4

Плагин Clean Options хорошо сработал для меня. Представленное автором описание плагина, кажется, соответствует тому, что вам нужно: «Находит потерянные опции и позволяет удалить их из таблицы wp_options».

Я еще не пробовал WP-Optimize лично, но это тоже выглядит многообещающе. И он говорит, что поддерживает WP 2.7 (в то время как Clean Options упоминает только определенную поддержку WP 2.3), приятно!

Майк Ли
источник
2

Это не обязательно устранит проблемы, wp_optionsно я использовал WP-Optimize для решения многих проблем с размером баз данных на моих сайтах 3.0. Он очищает ненужные публикации сообщений, спам-комментарии и может автоматически решить множество проблем. В моем главном блоге размер базы данных уменьшился с 30 МБ до чуть менее 6 МБ, и теперь она работает намного более плавно.

EAMann
источник
1

Я запускаю на своем сайте как «Чистые параметры», так и WP_Optimize, и комбо делает потрясающую работу по поддержанию базы данных в отличной форме.

Кит С.
источник