Як додати Планувальник завдань (Cron Job) в WordPress

Як додати Планувальник завдань (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. Але, завжди краще бути трохи обізнаним про важливі речі свого сайту, чи не так?

 



Напишіть тут свою думку/питання

Ваша пошта не публікуватиметься. Обов’язкові поля позначені *