Нет недостатка в запуске WP CRON с использованием заданий сервера cron. На самом деле это рекомендуемая практика.
Согласно Официальному документу по разработке плагинов WordPress :
WP-Cron не работает непрерывно, что может быть проблемой, если есть критические задачи, которые должны выполняться вовремя. Для этого есть простое решение. Просто настройте планировщик задач вашей системы так, чтобы он запускался с желаемыми интервалами (или в нужное время).
Для этого вам нужно сначала отключить поведение cron по умолчанию в wp-config.php
:
define('DISABLE_WP_CRON', true);
Затем расписание wp-cron.php
с вашего сервера. Для Linux это означает:
crontab -e
Однако вместо запуска в командной строке (CLI) запустите его как HTTP-запрос. Для этого вы можете использовать wget
:
*/5 * * * * wget -q -O - https://your-domain.com/wp-cron.php?doing_wp_cron
WordPress загружает все необходимые файлы ядра, плагины и т. Д. Со wp-cron.php
следующим КОДОМ:
if ( !defined('ABSPATH') ) {
/** Set up WordPress environment */
require_once( dirname( __FILE__ ) . '/wp-load.php' );
}
Так что не беспокойтесь о том, что WordPress не загружает важные функции.
wget http://YOUR_SITE_URL/wp-cron.php
без добавления слов.?doing_wp_cron
Так один лучше другого? Что делает дополнение?doing_wp_cron
, чего не делает не версия?define('DISABLE_WP_CRON', true);
отключает только эту часть процесса cron, а затем вызывает скрипт cron с кодом вроде:*/5 * * * * wget -q -O - https://your-domain.com/wp-cron.php?doing_wp_cron
на сервере проверяет выполнение заданий cron. Любой плагин планирования даже не будет знать разницу.Есть несколько недостатков: во-первых, при использовании wp-cron.php в качестве cli, переменные $ _SERVER не устанавливаются. Люди преодолевают это ограничение, используя вместо этого запрос curl к wp-cron.php.
Во-вторых, потому что сам WP не загружен wp-cron.php; если вы используете плагин SMTP, то он не будет загружен при вызове wp-cron. Опять же, использование вызова curl решает эту проблему. Керл, кажется, наиболее часто используемый метод.
Однако; Я предпочитаю использовать wp-cli после настройки параметров почты в postfix и (для nginx) в конфигурации php-fpm и установки crontab, например
(Перечислите все cron с определенными полями в формате csv - hook - это имя cron, относительное время следующего запуска - это время. Удалите те, которые показывают 'now' как следующий запуск (ожидаемые сейчас), используя AWK, передайте этот список xargs для вызовите
wp cron event run $HOOK
каждый cron.) Использование wp-cli корректно загружает WordPress (я предпочитаю пропускать плагины при перечислении cron, так как предупреждения об ошибках кода и php испортят вывод сценариев; но не пропускать их при запуске cron с xargs, так как cron может потребоваться загрузка плагинов)Надеюсь, это даст вам несколько советов о том, на что обратить внимание.
источник
Есть много причин не отключать wp-cron. На самом деле, найти вариант использования для этого практически невозможно. Он не замедляет работу вашего сайта и используется для вещей, о которых вы можете не знать.
Многие плагины используют WP-Cron для планирования событий. Они могут запутаться, если вы выключите планировщик.
Существует множество учебников на эту тему, потому что это сбивает с толку, и потому что это мало что дает вашему сайту, когда вы его отключаете. Что он будет делать, так это вызвать головную боль у разработчика, который должен решить таинственную проблему, которую он создает за шесть месяцев.
Кроме того, WP Heartbeat срабатывает каждые 15 секунд в административной области, решая эту проблему для 99% людей, которые думают, что они есть.
источник
Я еще не нашел реального недостатка в разгрузке wp-cron на внешние сервисы. Заниматься этим уже много лет.
Особенно в современном мире, где вы можете запускать приложения как микросервисы.
Я использую отдельные контейнеры Docker для каждого компонента WordPress - php, web, db, crontab, redis и т. Д.). Имея crontab в качестве отдельного контейнера, вызывая wp-cron через http, используя локальную сеть, работаю только тогда, когда мне это нужно.
Это уменьшает нагрузку на внутренние узлы и повышает безопасность благодаря меньшей площади атаки.
Если разработчик не может понять, как делать что-то, не вызывая wp-cron при каждой загрузке страницы, черт, это просто говорит о неопытности от его имени. «Оставить это в покое», потому что вы не понимаете, как все работает, не является хорошей причиной, чтобы сохранить это.
источник