У цьому пості ви дізнаєтеся про все, що потрібно знати звичайним користувачам WordPress про WP-Cron, що таке WP-Cron, як він працює і як ви можете переглянути всі завдання WP-Cron на своєму сайті. А також про деякі причини, з яких ви можете відключити WP-Cron та замінити його власним системним cron, заснованим на часі, та як саме це зробити у cPanel.
Що таке WP-Cron (wp-cron.php)
WP-Cron – це те, що WordPress використовує для обробки запланованих за часом завдань WordPress.
Наприклад, якщо ви заздалегідь плануєте опублікувати запис наступного вівторка о 16:00, WP-Cron відповідає за те, щоб запис дійсно був опублікований у цей час. Або якщо ви плануєте щотижневе очищення бази даних за допомогою вашого улюбленого плагіна оптимізації бази даних, WP-Cron також впорається з цим.
По суті, WP-Cron - це те, що робить будь-яке завдання, що залежить від часу, функцією. Він отримав свою назву від системи планування cron у Unix-подібних операційних системах. За допомогою цього cron системного рівня можна автоматично запускати завдання за розкладом.
Яким чином, незважаючи на схожість назв, WP-Cron відрізняється від cron-інструментів.
WP-Cron призначений не тільки для дій, які ви плануєте, – багато плагінів WordPress також покладаються на WP-Cron для планування виконання власних завдань. Наприклад, якщо ви використовуєте WooCommerce, він має безліч внутрішніх процесів, які залежать від WP-Cron.
Як працює WP-Cron?
WP-Cron запускається при відвідуванні вашого сайту, що призводить до одного з найбільших обмежень. Щоразу, коли ви чи інша людина відвідуєте ваш сайт WordPress (серверний чи інтерфейсний), WordPress запускає wp-cron.php та перевіряє наявність запланованих завдань. Якщо є завдання, WordPress обробить їх.
Але якщо немає відвідувачів, то нема чого запускати ці завдання, а це означає, що заплановані завдання не виконуватимуться, доки не буде відвідування.
Як переглядати завдання WP-Cron
Якщо вам потрібно бачити та керувати всіма завданнями, які WP-Cron виконує на вашому сайті WordPress, є цікавий безкоштовний плагін Контроль WP.
Після того, як ви встановите та активуєте плагін з WordPress.org, перейдіть до Інструменти → Події Cron. Тут відображаються всі заплановані завдання на сайті та те, як часто та коли вони запускаються. За потреби можна запустити вручну.
На скріншоті наведено приклад свіжої установки WordPress, тому на ньому не так багато всього. Якщо у вас багато плагінів, ви побачите набагато більше завдань:
Якщо ви перейдете на вкладку Розклади Cron, то побачите всі різні часові інтервали розкладу та зможете створити свої власні. WP Crontol також повідомить вам, звідки взявся розклад, якщо ви наведете на нього курсор:
Можна створити й власні події cron на вкладках «Додати подію Cron» або «Додати подію PHP Cron».
Дивіться також:
Як захистити ваш сайт WordPress від brute-force атак
Чому потрібно вимкнути WP-Cron?
Є кілька причин, через які доведеться відключити WP-Cron та замінити його справжнім системним Cron (з вашого сервера).
1. Не завжди надійно
Одним із найбільших обмежень WP-Cron є те, що він вимагає для своєї роботи відвідування кимось вашого сайту. Ці відвідування можуть бути зовнішніми відвідуваннями інших користувачів або вашими власними відвідуваннями, поки ви працюєте з панеллю керування. Якщо немає відвідувань сайту, ваші заплановані завдання не виконуватимуться.
Якщо у вас сайт з високою відвідуваністю, це не проблема – на ваш сайт завжди заходитимуть люди, що дозволяє запускати WP-Cron. Але для сайтів з низькою відвідуваністю це може спричинити серйозні проблеми.
Наприклад, припустимо, що ви плануєте публікацію посту о 17:00, але до 20:00 на сайті не було відвідувачів. У цьому випадку пост не буде опублікований до 8 вечора, тому що не виконалася головна умова запуску WP Cron.
Це може не мати великого значення для постів у блогах, але обмеження вплине на всі інші завдання на вашому сайті (такі як автоматичні оновлення, резервне копіювання, очищення та інші).
За допомогою реального системного Cron можна зробити так, щоб завдання запускалися кожні X хвилин, як годинник, незалежно від того, чи є у вашого сайту відвідувачі, що є набагато більш передбачуваним та надійним способом вирішення завдань, що базуються на часі.
2. Може зашкодити продуктивності
Якщо ви маєте сайт з високою відвідуваністю, перше обмеження на вас не поширюється.
Але це призводить до іншої потенційної проблеми – продуктивності. За промовчанням wp-cron.php запускається при кожному завантаженні сторінки, що може знизити продуктивність. WordPress намагається обмежити це, не надсилаючи додаткові запити частіше одного разу на 60-секундний період. Але якщо ваш сайт отримує кілька одночасних запитів, це все одно може призвести до кількох запитів wp-cron.php.
Навіть з обмеженням 60 секунд малоймовірно, що на вашому сайті є завдання, які повинні виконуватися кожні 60 секунд. Зазвичай менш часте розклад, наприклад кожні 15 хвилин, прийнятніше.
Важливо: WP-Cron може бути проблематичним як для сайтів WordPress із низьким, так і з високим трафіком, хоча з різних причин.
Як відключити WP-Cron і замінити його на реально працюючий Cron
Розглянемо, як вимкнути WP-Cron та замінити його власним системним cron.
Для ясності це не означає, що на вашому сайті перестануть працювати тимчасові завдання. Це просто означає, що замість покладатися на відвідування для запуску WP-Cron, можна використовувати більш надійну систему, засновану на часі.
Ви зможете встановити частоту відповідно до своїх потреб. Хороша відправна точка – запускати кожні 15 хвилин. Тоді ваш сайт виконуватиме всі тимчасові завдання кожні 15 хвилин, незважаючи ні на що. У вас може бути 500 відвідувань або нуль відвідувань – у будь-якому випадку ваші завдання запускатимуться кожні 15 хвилин.
Вимкнення WP-Cron складається з двох частин:
- Вимкнення WP-Cron у файлі wp-config.php.
- Налаштування власного системного cron для завантаження wp-cron.php за заданим вами розкладом.
Рекомендуємо зробити резервну копію вашого сайту, перш ніж продовжити, тому що файл wp-config.php буде внесено зміни.
1. Вимкніть WP-Cron у файлі wp-config.php
Створивши останню резервну копію вашого сайту, підключіться до нього через FTP або cPanel File Manager.
Знайдіть та відредагуйте файл WP-config.phpякий зазвичай знаходиться в кореневій папці вашого сайту.
Додайте наступний фрагмент коду над рядком, у якому йдеться /* That's all, stop editing! Happy publishing. */
:
define('DISABLE_WP_CRON', true);
2. Налаштуйте систему Cron
Тепер потрібно налаштувати свій власний системний cron для запуску WP-cron.php – інакше жодне із завдань вашого сайту WordPress не виконуватиметься.
Як ви це зробите, буде залежати від вашого хостингу, але покажемо, як це виглядає у cPanel. Якщо ви сумніваєтеся, зверніться за допомогою до служби підтримки хостингу.
Спочатку знайдіть інструмент під назвою Робота Cron або подібний:
Тепер ви повинні побачити інтерфейс, який дозволить вам налаштувати розклад для вашого завдання cron та команду, яку хочете запустити. У cPanel вам потрібно використовувати меню «Загальні налаштування" для вибору розкладу. В іншому випадку для налаштування розкладу потрібно слідувати синтаксису cron. Crontab.guru полегшує створення необхідного синтаксису.
Після налаштування розкладу введіть наступний фрагмент коду у розділі «Команда». Обов'язково замініть https://yourdomain.com на фактичне доменне ім'я вашого сайту:
wget -q -O - http://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Потім натисніть «Додати нове завдання Cron», і все готове до роботи! Ви побачите його у розділі «Поточні завдання Cron». У разі потреби можна відредагувати або видалити завдання cron з цього розділу:
Рекомендуємо встановити плагін WP Crontol, щоб переконатися, що заплановані завдання працюють. Якщо завдання не запускаються, WP Crontol виділить їх. Але ви можете ігнорувати попередження про відключення WP-Cron.
Ви тільки що офіційно відключили WP-Cron та замінили його своїм власним системним завданням cron.
Чи не можете налаштувати Cron на своєму хостингу? Використовуйте сторонню службу
Якщо ви не можете налаштувати завдання cron на своєму веб-хостингу або якщо вас просто спантеличує інтерфейс вашого хоста, ви також можете використовувати сторонній сервіс. Деякі популярні варіанти:
- EasyCron (Платний з обмеженим безкоштовним планом).
- SetCronJob (Оплачується).
- cron-job.org (Безкоштовно).
Все, що потрібно зробити, це використовувати одну з цих служб для виконання тієї ж команди з попереднього розділу.
Джерело: wplift.com
Коментарі до запису: 0