Рубрики
Uncategorized

WordPress — Переместите работу Cron в CLI

Перемещать WordPress Cron Worge в CLI улучшает свою производительность. Tagged with WordPress, DevOps.

Некоторое время назад мы начали наблюдать за проблемами производительности на сайте нашей компании, построенной с WordPress. Одной из вопросов, которые мы заметили, было вызов Crons в случайных запросах пользователей. Это реализовано, вызывая URL https://yourdomain.com/wp-cron.php Анкет Хотя в этом файле WordPress вызывает метод PHP FASTCGI_FINISH_REQUEST , который посылает ответ на пользователя как можно скорее, стоимость вызова подректов во время основного запроса стоит признать и улучшать. Есть и другие недостатки этого:

  • Вызов Crons в контексте запроса означает, что он ограничен, например, По настройке PHP-FPM. У нас часто есть ограниченные ресурсы (такие как память или ограничение по времени) для HTTP -запросов.
  • Что еще хуже, называя Cron как HTTP-запрос использует ресурс (например, пулы PHP-FPM, которые могут быть необходимы для обработки нашего трафика).

В Интернете есть много советов о том, как отключить изготовление подкоров, чтобы вызвать Crons и переместить их в CLI. Но есть одна проблема. Многие из этих советов предполагают, что эти запланированные задачи с использованием Crontab Вызовите Curl (или другие призывы HTTP). Это решало первую проблему и делает запрос пользователя свободными от подректов, но не решает две вышеупомянутые проблемы. Это удивительно, потому что WordPress приходит с WP Cron Команда, которая поддерживает выполнение запланированных задач в CLI, не выполняя HTTP -вызовы.

Чтобы сделать это, вы должны добавить одну линию в свой Crontab:

*/5 * * * * wp cron event run --due-now --path=path_to_your_wp

В этом случае мы называем запланированную задачу каждые 5 минут. WordPress отвечает за выбор конкретной задачи для запуска и запуска ее.

Конечно, вы также должны отключить призыв подреквянку к /wp-cron.php файл. Для этого добавьте следующее в свой файл wp-config.php:

define('DISABLE_WP_CRON', true);

На мой взгляд, вы также должны отрицать доступ к wp-cron.php Файл (потому что некоторые боты могут DDOS наш сайт, запрашивающий эту конечную точку). Я предлагаю сделать это на уровне сервера приложений. Например, если вы используете Nginx, добавьте следующее в конфигурацию вашего хоста:

location = /wp/wp-cron.php { deny all; }

Оригинал: «https://dev.to/plotek/wordpress-move-cron-jobs-to-cli-kgg»