В этом посте вы узнаете все, что нужно знать обычным пользователям 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, так что на нем не так много всего. Если у вас много плагинов, вы увидите намного больше задач:
Если вы перейдете на вкладку Cron Schedules, то увидите все различные временные интервалы расписания и сможете создать свои собственные. WP Crontol также сообщит вам, откуда взялось расписание, если вы наведете на него курсор:
Можно создать и свои собственные события 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 состоит из двух частей:
- Отключение WP-Cron в файле wp-config.php.
- Настройка вашего собственного системного 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);
2. Настройте вашу систему Cron
Теперь нужно настроить свой собственный системный cron для запуска wp-cron.php – в противном случае ни одна из задач вашего сайта WordPress не будет выполняться.
Как вы это сделаете, будет зависеть от вашего хостинга, но покажем, как это выглядит в cPanel. Если вы сомневаетесь, обратитесь за помощью в службу поддержки хостинга.
Сначала найдите инструмент под названием Cron Jobs или подобный:
Теперь вы должны увидеть интерфейс, который позволит вам настроить расписание для вашего задания cron и команду, которую хотите запустить. В cPanel вам нужно использовать раскрывающееся меню «Общие настройки» для выбора расписания. В противном случае для настройки расписания нужно будет следовать синтаксису cron. Crontab.guru упрощает создание необходимого синтаксиса.
После настройки расписания введите следующий фрагмент кода в разделе «Команда». Обязательно замените https://yourdomain.com на фактическое доменное имя вашего сайта:
wget -q -O - http://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Затем нажмите «Добавить новое задание Cron», и все готово к работе! Вы увидите его в разделе «Текущие задания Cron». При необходимости можно отредактировать или удалить задание cron из этого раздела:
Рекомендуем установить плагин WP Crontol, чтобы убедиться, что запланированные задачи работают. Если какие-либо задачи не запускаются, WP Crontol выделит их. Но вы можете игнорировать предупреждение об отключении WP-Cron.
Вы только что официально отключили WP-Cron и заменили его своим собственным системным заданием cron.
Не можете настроить Cron на своем хостинге? Используйте стороннюю службу
Если вы не можете настроить задания cron на своем веб-хостинге или если вас просто сбивает с толку интерфейс вашего хоста, вы также можете использовать сторонний сервис. Некоторые популярные варианты:
- EasyCron (платный с ограниченным бесплатным планом).
- SetCronJob (оплачивается).
- cron-job.org (бесплатно).
Все, что вам нужно сделать, это использовать одну из этих служб для выполнения той же команды из предыдущего раздела.
Источник: wplift.com
Комментарии к записи: 0