MikeSchinkel
  • 0
Гуру

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

  • 0

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

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

Share
  1. Нет запроса, который будет на 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 файла.

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

    • 0
    • Я бы настоятельно рекомендовал memcached/incr() для этого вместо потенциально большого количества записей в БД.

      • 0
    • @Denis — Поскольку memcached требует расширенной настройки сервера, что невозможно даже на общем сервере, на котором размещено большинство сайтов WordPress, и поскольку это одноразовая или случайная процедура диагностики, я не понимаю, почему вы должны подчеркивать необходимость для memcached для этого варианта использования ? Может быть, я что-то упускаю, можете ли вы подробно рассказать, почему кто-то, кто должен перейти на VPS или выделенный сервер и научиться, или попросить кого-то настроить memcached, должен сделать это просто, чтобы избежать большого количества обращений к базе данных для редко используется процедура обслуживания?

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

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

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

    • 0
  4. Я запускаю на своем сайте как Clean Options, так и WP_Optimize, и эта комбинация отлично справляется с поддержанием базы данных в отличной форме.

    • 0

Оставить ответ

You must login to add an answer.