Что такое WP-Cron и как его отключить

В этом посте вы узнаете все, что необходимо знать обычным посетителям 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 Crontrol.

После того, как вы установите и активируете плагин с WordPress.org, перейдите в Инструменты → События Cron. Здесь выводятся все запланированные задачи на веб-сайте и то, как часто и когда они запускаются. При необходимости можно легко запустить их вручную.

На скриншоте приведен пример свежей установки WordPress, поэтому на нем не так много всего. Если у вас много плагинов, вы увидите гораздо больше задач:

Что такое WP-Cron и как его отключить

Если вы перейдете на вкладку Cron Schedules, то увидите все разные временные интервалы расписания и сможете без проблем создать ваши собственные. WP Crontol также сообщит вам, откуда взялось расписание, если вы наведете на него курсор:

Что такое WP-Cron и как его отключить

Можно без проблем создать и собственные события 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 состоит из двух частей:

  1. Отключение WP-Cron в файле wp-config.php.
  2. Параметр собственного системного 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);
Что такое WP-Cron и как его отключить

2. Настройте систему Cron

Сейчас необходимо изменить собственный системный cron для запуска wp-cron.php – в противном случае ни одна из задач веб-сайта WordPress не будет выполняться.

Как вы это сделаете, будет зависеть от  веб-хостинга, но покажем, как это выглядит в cPanel. Если вы сомневаетесь, обратитесь за помощью в службу поддержки веб-хостинга.

Сначала найдите инструмент под названием Cron Jobs или подобный:

Что такое WP-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
Что такое WP-Cron и как его отключить

Далее нажмите « Добавить новое задание Cron», и все готово к работе! Вы увидите его в разделе « Текущие задания Cron ». При необходимости можно отредактировать или удалить задание cron из этого раздела:

Что такое WP-Cron и как его отключить

Рекомендуем установить плагин WP Crontol, чтобы убедиться, что запланированные задачи работают. Если какие-либо задачи не запускаются, WP Crontol выделит их. Но вы можете игнорировать предупреждение об отключении WP-Cron.

Вы только что официально отключили WP-Cron и заменили его вашим собственным системным заданием cron.

Не можете без труда изменить Cron на веб-хостинге? Используйте стороннюю службу

Если вы не можете изменить задания cron на хостинге или если вас просто сбивает с толку интерфейс хоста, вы также можете использовать сторонний сервис. Некоторые популярные варианты:

  • EasyCron(платный с ограниченным бесплатным планом).
  • SetCronJob(оплачивается).
  • cron-job.org(бесплатно).

Все, что вам необходимо сделать, это использовать одну из данных служб для выполнения той же команды из предыдущего раздела.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *