Як я можу видалити осиротілі ключі в таблицях баз даних 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файлу.

Хоча це все ще не ідеально, це набагато краще, ніж нічого. Сподіваюся, що це допомагає?


Я настійно рекомендую memcached / incr () для цього замість потенційно великої кількості db пише.
Деніс де Бернарді

3
@Denis - оскільки memcached вимагає розширеної настройки сервера, яка навіть неможлива на спільному сервері, де розміщено більшість сайтів WordPress, і оскільки це разова або епізодична діагностика, я не розумію, чому ви наголосили б на необхідності для пам’яті для цього випадку використання ? Можливо, мені чогось не вистачає. Чи можете ви детально пояснити, чому хтось, кому довелося б перейти на VPS або виділений сервер і навчитися робити чи комусь налаштувати запам’ятоване, повинен це робити, щоб уникнути великої кількості звернень до бази даних рідко використаний режим обслуговування?
MikeSchinkel

4

Опції плагіна Очистити мені добре. Опис автора плагіна, здається, відповідає тому, що вам потрібно: "Знаходить осиротілі варіанти та дозволяє їх видалити з таблиці wp_options."

Я ще не пробував WP-Optimize особисто, але це теж виглядає перспективно. І він говорить, що він підтримує WP 2.7 (тоді як Clean Options згадує лише певну підтримку WP 2.3), приємно!


2

Це не обов'язково зніме проблеми, wp_optionsале я використовував WP-Optimize, щоб виправити багато проблем із розміщенням баз даних на моїх сайтах 3.0. Він очищає непотрібні зміни до публікацій, коментарі зі спамом та може автоматично виправити багато проблем. У моєму головному блозі БД було скорочено з 30 МБ до трохи менше 6 МБ і працює набагато більш плавно.


1

На моєму веб-сайті я запускаю як «Опції чистого», так і WP_Optimize, і комбо виконує приголомшливу роботу щодо збереження бази даних у чудовій формі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.