+7 499 67 76 152 Звоните с 10:00 до 18:00 (по МСК)
Регистрация

wp-cron.php — друг или враг? Отключение wp-cron.php

К нам периодически обращаются клиенты с различными вопросами. Достаточно часто вопросы связаны с оптимизацией сайтов или сервера. На днях к нам обратился клиент, у которого была очень высокая нагрузка. Как оказалось проблема была в том, что очень часто запускался wp-cron.php. Это было видно по логам

195.1.***.*** — — [12/Sep/2015:04:11:00 +0300] «POST /wp-cron.php?doing_wp_cron=1442193059.4414520263671875000000 HTTP/1.0» 499 0 «-» «WordPress/4.3; https://****.com» «-»
195.1.***.*** — — [12/Sep/2015:04:15:00 +0300] «POST /wp-cron.php?doing_wp_cron=1442209914.0411450862884521484375 HTTP/1.0» 499 0 «-» «WordPress/4.3; https://****.com» «-»
195.1.***.*** — — [12/Sep/2015:04:15:10 +0300] «POST /wp-cron.php?doing_wp_cron=1442209914.0411450862884521484375 HTTP/1.0» 499 0 «-» «WordPress/4.3; https://****.com» «-»
195.1.***.*** — — [12/Sep/2015:04:15:13 +0300] «POST /wp-cron.php?doing_wp_cron=1442209914.0411450862884521484375 HTTP/1.0» 499 0 «-» «WordPress/4.3; https://****.com» «-»

из лога видно, что сам WordPress шёлт POST запросы к wp-cron.php.

За что отвечает wp-cron.php

wp-cron.php это скрипт, который выполняет ряд задач, а именно:

  • публикация отложенных постов;
  • проверка обновлений (WP, плагины и шаблоны);
  • рассылка уведомлений о новых комментариях;
  • оповещение о новых постах;

и так далее.

Задач у данного скрипта немало, следовательно он нужен. Однако столь частый запуск является ресурсоёмким удовольствием и может вызвать нехватку оперативной памяти на младших тарифах.

Отключение wp-cron.php

Очевидным решением в такой ситуации для нас стал отключение автоматического запуска wp-cron.php самим WordPress. Делается это достаточно просто. Добавьте такой код в конфигурационный файла wp-config.php  (например после define (‘WPLANG’, ‘ru_RU’); )

define('DISABLE_WP_CRON', true);

Таким образом мы избавились от столь частого автоматического запуска wp-cron.php. Однако, как мы помним задачи он выполняет достаточно важные. Следовательно запуск его необходим. Поэтому необходимо добавить cron задачу на сервере следующего вида

curl "http://domen.com/wp-cron.php?doing_wp_cron"

Частоту запуска можно определить самостоятельно, в зависимости от потребностей. В нашем случае клиенту был установлен интервал запуска раз в 10 часов.

Категории: Разное  
Janna Kostyakova
2016-02-19 15:17:07
У меня периодически тоже нагрузка повышается без видимой причины. Не критически, поэтому в поддержку не обращалась пока. Возможно, та же проблема. А могу я как-то сама выяснить, как часто запускался wp-cron.php?
Руслан Тараник
2016-02-19 17:28:45
Нужно на всякий случай тоже попробовать отключить WP-CRON.PHP. А если раз в сутки запуск этот сделать? Не слишком редко? Будут оповещения и уведомления показываться или нет?))
Алексей Палко
2016-02-19 17:36:55
Бывали случаи и похуже. Мое решение было отключить этот плагин. Пусть лучше система будет более свободной. Так и железу будет лучше, да и поддержку не отвлекать постоянными проблемами. Отключение и не такое критичное, как кажется со стороны
Alex111
2016-02-19 18:53:43
У меня wp-cron.php запускается не часто, но сейчас на всякий случай поставил на раз в сутки обрабатываться по крону OC. Проблем никаких. ещё и ресурсы лишние не потребляет.