Запланированные задачи WordPress используют Cron, планировщик заданий на основе времени в Linux/Unix. Устаревшие, не выполненные задания Cron могут накапливаться, вызывая раздувание базы данных и медленную загрузку вашего сайта.
Причины, по которым это может произойти, разнообразны. Плохо написанный код плагинов, неправильно настроенное ручное задание Cron для wp-cron.php и запланированные задачи, оставшиеся после удаления резервной копии или плагина безопасности, - это всего лишь несколько причин, по которым события Cron в очереди могут неожиданно накапливаться.
Как посмотреть очередь Cron в WordPress
Рассмотрим быстрый способ просмотреть расписание wp-cron.
Вы можете это сделать с помощью MySQL запроса, например, выполнив его в phpMyAdmin:
SELECT * FROM `wp_options` WHERE `option_name` LIKE '%cron%'
Или через functions.php:
$cron_jobs = get_option( 'cron' ); var_dump($cron_jobs);
WordPress имеет недокументированную функцию _get_cron_array (), которая возвращает массив всех текущих запланированных задач. Это грубый, но эффективный метод для показа всех задач с помощью var_dump(). Для удобства использования вставьте в плагин или страницу следующий код:
echo '<pre>'; print_r (get_cron_array()); echo '</pre>';
Вы можете использовать WP-CLI. Из командной строки вы можете запустить следующую команду из каталога вашей установки WordPress:
wp cron event list
Он покажет таблицу запланированных событий, когда они будут запускаться и как часто они будет перенесены. Вот что мне показали, когда я запустил команду:
Как очистить очередь Cron в WordPress
Если накопилось много задач Cron, например, из-за неправильной работы плагина или из-за того, что служба Cron не работала длительное время, то можно очистить очередь Cron. При этом, конечно же, будут потеряны не выполненные действия, например, не отправлены письма с уведомлением о новых комментариях и новых статьях, или не внесены записи в базу данных о статистике посещений.
Рассмотрим два способа удаления задач Cron — с помощью phpMyAdmin и утилиты командной строки.
После входа в phpMyAdmin, перейдите в базу данных сайта, для которого вы хотите очистить очередь Cron, перейдите на вкладку SQL и выполните следующий запрос:
UPDATE wp_options SET option_value = '' WHERE option_name = 'cron';
Также вы можете использовать WP-CLI для очистки очереди задач Cron:
wp cron event list wp cron event delete
атем проверьте свой сайт, чтобы убедиться, что всё загружается. Если все пойдёт хорошо, вы можете заметить более быструю панель управления WordPress и загрузку сайта.
Хотя не забудьте ещё раз проверить свой список WordPress Cron через 24 часа. Если что-то на вашем сайте остаётся неправильно настроенным и продолжает вызывать накопление запланированных задач, как и раньше, вам нужно будет решить эту проблему, чтобы предотвратить повторное раздутие базы данных в будущем.
Связанные статьи:
- Как установить WordPress на Ubuntu/Linux Mint (69.8%)
- Виртуальный хостинг с Memcached и WP-FFPC (69.8%)
- Защита контента веб-сайта (54%)
- Файлы настроек веб-сервера Apache в Ubuntu (54%)
- Как настроить виртуальные хосты веб-сервера Apache в Linux (54%)
- Как установить Nginx, MySQL, PHP в Ubuntu 16.10 или 17.04 (RANDOM - 50%)