Як вимкнути стандартний планувальник WordPress та переключитись на серверний?

Cr0n
KR. LABORATORIES
Published in
4 min readJul 6, 2022

--

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

Що таке Cron і WP Cron?

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

Синтаксис серверного планувальника crontab

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

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

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

Офіційна документація по WordPress CRON:

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

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

define( 'DISABLE_WP_CRON', true );

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

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

crontab -e

При першому запуску, планувальник запитає який текстовий редактор обрати. Оберіть Nano — він самий легкий і простіший.

Після цього ви перейдете у редагування файлу планувальника і тут треба додати команду запуску планувальника на сервері.

В залежності від налаштувань веб-сервера і операційної системи вона може відрізнятися.

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

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

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

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

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

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

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

Заувага: Для власників серверів на 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?

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

та

Встановивши один із них, ви зможете через спеціальну вкладку у панелі керування WordPress відстежувати статус виконання усіх завдань.

UPD: Є підозра, що один із моїх сайтів був зламаний саме через плагін WP-CRONTROL, але це вимагає власного підтвердження.

Автор: Cr0n

--

--

KR. LABORATORIES
KR. LABORATORIES

Published in KR. LABORATORIES

Блог KR. Laboratories на платформі Medium.

Cr0n
Cr0n

Written by Cr0n

ІТ-спеціаліст, білий хакер, експерт з інформаційних технологій.