Як вимкнути стандартний планувальник Wordpress

Як вимкнути стандартний планувальник WordPress (WP Cron) і увімкнути серверний?

Вбудований планувальник WordPress — WP_Cron не завжди відрізняється стабільністю та гнучкістю роботи. Запускається тоді, коли бажає, а системні ресурси споживає нерівномірно… Тому, один з шляхів оптимізації WordPress — це відключення стандартного планувальника і перехід на серверну службу crontab. Як це зробити та що це у висновку дає — далі поговоримо у цій статті.

Що таке Cron і WP Cron?

Cron — це консольний планувальник завдань, вбудована утиліта OC Linux. Використовується для автоматичного виконання команд і сценаріїв, розкладу в заданий час. Назва Cron походить від грецького χρόνος (Chronos) — час.

Синтаксис Cron job

WP-CRON — це вбудований скрипт WordPress (wp-cron.php), який створений для автоматичного планування й виконання різних задач, наприклад:

  • Оновлення системи;
  • Публікація запланованих публікацій;
  • Email-сповіщення і розсилки;
  • Очищення кошика;
  • Скидання кешу;
  • Створення резервних копій і ревізій.
  • Виконання тих чи інших сценарії плагінів.

Головний недолік WP Cron — він виконується в залежності від кількості запитів до файлу wp-cron.php. Якщо у сайту великий трафік — він буде навантажувати систему. Це за деяких обставин навіть може спричинити DDOS. Якщо ж у сайту немає відвідувачів — то відповідно планувальник не запуститься.

Офіційна документація по Cron від WordPress: https://developer.wordpress.org/plugins/cron/

Як відключити WP Cron?

Достатньо перейти у кореневу директорію сайту та внести правку у файл конфігурації WordPres — wp-config.php. А саме — додати або змінити директиву:

define( 'DISABLE_WP_CRON', true );

Як включити серверний cron?

Необхідно підключитися до сервера по SSH і в командному рядку виконати: EDITOR=nano crontab -e

Тепер потрібно додати команду, яка буде запускати на виконання wp-cron.php.

У більшості випадків спрацює команда wget:

*/5 * * * * wget -qO- https://example.com/wp-cron.php &> /dev/null

Таким чином, кожні 5 хвилин сервер буде звертатись в автоматичному режимі до файлу wp-cron.php й виконуватиметься скрипт планувальника.

ЧИТАЙТЕ ТАКОЖ:  Як створити статичний сайт на GitHub та BitBucket?

Інший спосіб запуску Cron — через php. (На деяких серверах спрацює тільки він). Рекомендую наступну конфігурацію запуску:

*/1 * * * * cd /abs_path/example.com/public_html; php wp-cron.php doing_wp_cron > /dev/null 2>&1

За бажанням, можна скористатися генераторами Сronjob >>

Заувага: Для власників серверів на LiteSpeed/OpenLiteSpeed – якщо ви у цілях безпеки хочете перекрити будь-які зовнішні запити з інтернету до wp-cron.php, окрім звісно вашого сервера, необхідно перейти в меню Server Configuration > General й увімкнути опцію Use Client IP in Header, а потім для Virtual Host (домену) прописати окремі правила в Rewite Rules:

RewriteCond %{REMOTE_ADDR} !^XXX\.XXX\.XXX\.XXX
RewriteCond %{REQUEST_URI} xmlrpc.php|wp-cron.php [NC]
RewriteRule .* - [F,L]

Як перевірити роботу планувальника WordPress?

Для цього існують спеціальні плагіни, наприклад Advanced Cron Manager:

Advanced Cron Mananger for WordPress

Якщо Cron з якигось причин не працює, протестувати його можна з допомогою скрипта.

Автор: © Konrad Ravenstone, KR. Laboratories Research

Konrad Ravenstone// про автора

Кібермольфар, хакер, лінуксоїд, дослідник безпеки в KR. Labs Research

Сподобалася стаття? Поділитися в соцмережах:
KR. Labs Research
Рекомендоване:
Ці системи розроблені кращими головами світу й знадобляться не лише…