Что такое WP-Cron (wp-cron.php)

Click here to view original web page at hostenko.com

В этом посте вы узнаете все, что нужно знать обычным пользователям WordPress о WP-Cron, что такое WP-Cron, как он работает и как вы можете просмотреть все задачи WP-Cron на своем сайте. А также о некоторых причинах, по которым вы можете отключить WP-Cron и заменить его собственным системным cron, основанным на времени, и как именно это сделать в cPanel.

WP-Cron – это то, что WordPress использует для обработки запланированных по времени задач в WordPress.

Специализированный хостинг для сайтов на 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. */:

1define('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 на фактическое доменное имя вашего сайта:

1wget -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 (бесплатно).

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

Источник: wplift.com