Мониторинг WP-Cron заданий в WordPress

Мониторинг и управление WP-Cron заданиями в WordPress

«Cron» — это команда для старта заданий на сервере. Они выполняются по расписанию. Либо в конкретный час и минуту, либо по определенному интервалу. Задания «WP-Cron» не включаются автоматически. Во время любой загрузки страницы когда кто то зашел на сайт, каждое задание сопоставляется с настоящим временем и если оно уже наступило, задание начнет выполняться. Однако, если у вас запланировано задание на 04:01, при этом посещений на сайте в это время мало, то вероятно, задание выполнится с отклонением от графика. Мониторинг и управление WP-Cron заданиями в WordPress выполняется из административной части сайта. К примеру: публикация запланированных записей, мониторинг обновлений CMS и прочее происходит 2 раза в день. Далее мы детальней рассмотрим возможности планировщика заданий.

Тестируем работу WP-Cron у вас на сайте и чиним его, если есть проблемы

Чаще всего мониторинг и управление WP-Cron заданиями в wordpress проходит без проблем. Однако бывают случаи, когда что-то не работает. Предлагаем проверить это на своем сайте.

Зайдите в редактор записей, создайте новую, добавьте в нее минимальное количество текста и заголовок, можно всяческую абракадабру и отсебятину. Главное, чтобы эту статью можно было сохранить и запланировать. Над кнопкой «Опубликовать» вы можете увидеть ссылку «Изменить».

Изменить способ публикации статьи

Перейдите по ней и вы сможете запланировать публикацию, выставив время на несколько минут вперед. Затем нажмите «Оk»

Изменить дату публикации статьи

Таким образом, публикация запланируется.

Запланировать публикацию записи

Если с планировщиком у вас все хорошо, то статья непременно опубликуется в заданное время. Иначе вы увидите:
публикация просрочена
Если у вас все прошло гладко и статья опубликовалась в правильное время, то следующую главу можете не читать.

 

Фиксим WP-Cron

Какие следующие шаги следует предпринять, если WP-Cron не справляется со своими обязанностями? Вот, первая помощь:

Зайдите в файл wp-config.php и убедитесь нет ли там строчки, которая отключает планировщик define('DISABLE_WP_CRON', true);Обнаружив его – удалите. Проведите эксперимент снова. Но если в файле wp-config.php строка с define('DISABLE_WP_CRON', true); отсутствует, то нужно попытаться подключить другую конфигурацию планировщика,  поэтому вставляем туда другой код:

define('DISABLE_WP_CRON', true); 

define('ALTERNATE_WP_CRON', true);

Если и этого оказалось недостаточно, то попробуйте поработать с системой Cron на вашем хостинге. Попробуем деактивировать виртуальный WP-Cron. Снова вводим код:

define('DISABLE_WP_CRON', true);

В хостинге вам попробуйте отыскать подходящий инструмент для Cron. Перейдите туда и в поле, которое чаще всего звучит как «Команда для выполнения» прописываем адрес вашего файла wp-cron.php на сайте, где вместо sitename.ru нужно вставить адрес вашего сайта:

wget -O /dev/null http://sitename.ru/wp-cron.php?doing_wp_cron

Безрезультатно? Смело обращайтесь в техподдержку хостинга, ведь чаще всего баги с виртуальным WP-Cron случаются на сервере. Но столкнувшись с некомпетентностью и бездействием, переносите сайт на более приличный хостинг.

Как настроить мониторинг и управление WP-Cron заданиями в WordPress

Команды для выполнения задач с WP-Cron

  • wp_schedule_single_event() — запланировать выполнение задания в конкретное время;
  • wp_schedule_event() — создать задание, которое будет выполняться через определенные интервалы;
  • wp_unschedule_event() — исключить указанную задачу из планировщика
  • wp_clear_scheduled_hook() — исключить из списка задач события, связанные с определенным хуком
  • wp_next_scheduled() — установить следующее время выполнения определенного хука

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

А в самом “ядре” системы управления сайтом, к сожалению, нет комфортного для пользователя управления планированием заданий. Тут нам может помочь плагин “WP Control”.

 

Настройка заданий с помощью плагина

Установив и активировав “WP Control”, в боковом меню административной части сайта откройте раздел “Инструменты” => “Cron Events”. После чего вы попадете на страницу со списком всех запланированных Cron-ивентов. Выглядеть это может так:

мониторинг и управление WP-Cron заданиями в wordpress

В первом столбце таблицы отображается наименование хука, который дает зеленый свет планировщику. Благодаря такой номенклатуре можно легко понять, что означает та или иная задача. Наверное вы заметили, что немало хуков начинаются с сочетания символов wp_ :

Видно, что большинство WordPress-хуков начинаются с префикса “wp_”, например, wp_update_plugins или wp_privacy_delete_old_export_files. В столбце “Next Run”можно узнать, когда? во сколько и с какой периодичностью запускаются задания. В конце каждого хука администратор сайта сможет решить его дальнейшую судьбу. Стоит ли задание удалить вовсе, изменить параметры, а если все в порядке, то запустить. Однако, указанные в примере задания являются стандартными в WP. Это значит, что вмешательство в цикл их работы может негативно сказаться на работе сайта.

Изменение расписаний задач

Если кликнуть по кнопке "Edit", то автоматически откроется вкладка "Modify Cron Event"

Если кликнуть по кнопке “Edit”, то автоматически откроется вкладка “Modify Cron Event”. В ней сможете изменить расписание. К примеру, если событие “wp_update_plugins” запускалось “каждые 12 часов”, то этот параметр можно изменить на “каждый день”, то есть каждые 24 часа и т.д.

мониторинг и управление WP-Cron заданиями в wordpress

Чтобы сохранить настройки, нажмите синюю кнопку внизу “Modify Cron Event”.

 

Добавить новую задачу

Чтобы добавить новую задачу, здесь же откройте вкладку “Add Cron Event”

мониторинг и управление WP-Cron заданиями в wordpress

  • Для начала, новому хуку следует дать имя. Вводим название в поле “Hook Name”, при этом нельзя использовать спецсимволы и пробелы.
  • Параметры новой задачи указываем в поле “Arguments (optional)”.
  • В поле “Next Run”указываем время старта задания, а периодичность в “Recurrence

Не забудьте сохраниться, нажав на синюю кнопку “Add Cron Event”, но чтобы корректно завершить все настройки, добавьте в файл “functions.php” свой хук и функцию, которая будет запускаться при выполнении задачи.

if ( ! wp_next_scheduled( 'wpschool_custom_cron' ) ) { 

wp_schedule_event( time(), 'hourly', 'my_task_hook' ); 

} 

add_action( 'wpschool_custom_cron', 'wpschool_custom_cron_func' ); 

function wpschool_custom_cron_func() { 

wp_mail( '[email protected]', 'Автоматическое письмо', 'Текст автоматического письма' ); 

}

Функция в примере отправляет простое письмо на указанный адрес.