Как добавить Планировщик задач (Cron Job) в WordPress

Планировщики задач (Cron Jobs) – это то, что мы используем каждый день, даже если мы об этом и не знаем. Они запускаются за сценой, наполняя жизнью наши любимые сайты. В этом уроке мы обсудим Cron задачи в целом, уникальные задания в WordPress, и рассмотрим базовый метод добавления планировщика задач в WordPress.

 

 

Что такое Планировщик задач (Cron Job)?

В общем, Cron – это утилита, которая помогает запланировать выполнение команд или скриптов в определенное время. Задачи Cron – это результирующие задачи, и если их перевести на человеческий язык, они сообщают серверу что-то вроде «запускать файл file.php каждый день в полночь». Планировщик задач – это простой способ настроить автоматический запуск задачи, либо на разовой, либо на постоянной основе.

Примером пользы от планировщика может служить автоматический запуск службы резервного копирования своего сайта. Нам не нужно каждый раз нажимать кнопку, чтобы сделать бекап нашего сайта, — достаточно будет единожды настроить Cron и установить для него расписание.

 

 

Какая польза от Планировщика задач в WordPress?

Кроме автоматического резервного копирования, упомянутого выше, в WordPress есть масса других применений для Cron. Одной из самых ярких является автоматическое обновление. Планировщик задач регулярно проверяет последние обновления программного обеспечения, тем и плагинов. И найдя доступные обновления, предлагает вам нажать кнопку «Обновить».

Кроме того, Cron в WordPress также занимается публикацией запланированных постов, отправкой пингбэков и трекбэков, и другими потенциально полезными вещами.

 

 

Чем Cron в WordPress отличается от обычного Cron?

У WordPress фактически есть своя система для запуска заданий Cron. И она немного отличается от обычного Cron.

Для обычного планировщика задач достаточно указать точную дату и время выполнения каждого задания. И, подобно часовому механизму, ваш скрипт будет выполняться именно в это время. Но Cron в WordPress работает по-другому. Фактически он не работает. Вместо этого он запускается только тогда, когда кто-то посещает ваш сайт. Всякий раз, когда кто-то посещает сайт, Планировщик задач в ВордПресс проверяет, есть ли задачи по расписанию, которые нужно запустить. Если он обнаружит, что запланированное время задачи уже прошло, он все равно продолжит выполнение этой задачи.

А если никто не заходит на сайт? Вот тут и кроется потенциальная проблема. Если никто не посещает сайт в течение определенного периода времени, Планировщик задач спокойно себе отдыхает. Очевидно, что если ваш сайт ежедневно посещают тысячи пользователей, это вряд ли будет проблемой. Но если на ваш сайт заходят лишь несколько посетителей в день, а вам нужно запускать Cron каждые 30 минут, тогда вы столкнулись с проблемой.

Например, вы настроили с помощью плагина автоматическую отправку рассылки на 2 часа ночи. Теоретически, если никто не посетит ваш сайт до 7 утра, тогда письма не будут отправлены (при прочих равных условиях) до 7 часов утра.

 

Однако есть способы обойти эту проблему.

 

 

Как добавить задачи по расписанию в WordPress

Здесь мы кратко рассмотрим процесс добавления основных повторяющихся заданий, а также одноразовых запланированных заданий.

 

 

Как добавить повторяющиеся задачи Cron

Важно помнить, что Планировщик задач в WordPress работает с интервалами, а не в определенное время. Например, если вы планируете запуск задачи в 00 часов ночи с интервалом в два часа, он первый раз запустится в 12 часов ночи. А потом через каждые 2 часа.

Чтобы добавить повторяющиеся задачи, воспользуйтесь примером кода ниже (взято с Codex; можно использовать, например, в своем плагине):

 

register_activation_hook(__FILE__, 'my_activation');
function my_activation() {
  if (! wp_next_scheduled ( 'my_hourly_event' )) {
    wp_schedule_event(time(), 'hourly', 'my_hourly_event');
  }
}
add_action('my_hourly_event', 'do_this_hourly');

function do_this_hourly() {
  // выполнять что-то каждый час
}

 

 

 

Как добавить одноразовую задачу Cron

Чтобы добавить одноразовое задание Cron в WordPress, вы можете использовать следующий пример кода в качестве базы. Опять же, помните, что даже если вы запланируете запуск события в определенное время, Cron запустится только тогда, когда на ваш сайт примерно в одно и то же время зайдет посетитель. Чтобы обойти это ограничение, лучше всего настроить Cron на сервере вашего хостинга и установить запуск файла {DOMEN}/wp-cron.php на определенное время. Также на сервере можно настроить и повторяющийся запуск Планировщика задач.

Чтобы запустить задачу через один час с текущего времени, вы можете в своем плагине использовать эту структуру:

 

function do_this_in_an_hour() {
  // что-то сделать через час
}
add_action( 'my_new_event', 'do_this_in_an_hour' );

// поместите эту строку внутри функции,
// предположительно в ответ на что-то, что пользователь делает
// иначе будет запланировано новое событие при каждом посещении страницы
wp_schedule_single_event( time() + 3600, 'my_new_event' );

// time() + 3600 = один час с текущего времени

 

 

 

 

Краткий итог

Вот и все! Это было довольно быстрое и краткое введение в Планировщик задач, который используется в сайтах на движке WordPress. Честно говоря, если вы не являетесь разработчиком, вам, вероятно, никогда не понадобится знать о задачах Cron в WordPress. Но, всегда лучше быть немного осведомленным о важных вещах своего сайта, не так ли?

 

Последние посты

Генри Форд

Человек имеет два мотива поведения — один настоящий и второй, который красиво звучит Генри Форд…

16/07/2024

Фридрих Ницше

Не нужно додумывать слишком много. Так вы создаете проблемы, которых изначально не было Фридрих Ницше…

11/07/2024

Такой разный инвертор! Выбираем между кондиционерами Inverter, Inverter DC и Full DC

Лето в разгаре, а значит самое время задуматься о покупке кондиционера. Но как не потеряться…

06/07/2024

Омар Хайям

Настоящий друг — это человек, который в глаза тебе выскажет все, что о тебе думает,…

30/06/2024

Полезные советы по выбору раздвижной двери

Следует знать, что функциональность и дизайн работают рука об руку, когда вы используете раздвижную дверь.…

29/06/2024

Гераклит

Единственное, что есть в нашей жизни постоянного, — это перемены. Нет ничего более постоянного, чем…

23/06/2024