В этой статье я расскажу зачем нужно настраивать задания по CRON для сайта и как это сделать на популярных движках.
Сначала давайте разберемся что вообще такое CRON.
CRON — это стандартный инструмент, используемый в Linux и его дистрибутивах для планирования и автоматизации задач.
А значит, это наш верный помощник для автоматизации выполнения фоновых заданий на сайте, ведь каждый более или менее серьезный сайт содержит в себе кроме публичных страниц еще и дополнительные инструменты, например отправка уведомлений при смене статуса заказа, или загрузка/выгрузка данных для обмена с внешними системами. И если в первом примере отправить одно письмо на email занимает несколько десятков миллисекунд и это можно делать в момент публичных страниц, то второй пример с загрузкой данных может выполняться десятки секунд, а это уже совсем не позволительная ситуация, чтобы публичные страницы ждали пока выполнится фоновое задание перед тем, как сервер отдаст контент страницы браузеру пользователя.
Именно для фонового запуска регламентных операций и используется CRON. Он позволяет за нас запускает служебные скрипты для регламентных заданий, тем самым мы разгружаем обычные запросы страниц от выполнения лишних операций, чтобы у пользователей страницы отображались как можно быстрее.
Как настроить крон на своем сайте?
В настоящее время почти у всех популярных CMS сайтов уже давно выделены служебные адреса для этой цели, и в документации подробно описано как это сделать. Я расскажу принципиальные моменты как это делается и приведу примеры нескольких CMS.
В целом настройка планировщика CORN зависит больше от хостинга, на котором размещен сайт и в большинстве случаев техподдержка хостинга или администратор сервера может помочь в этом вопросе.
На хостинге с панелью управления это можно сделать самостоятельно через пункт меню “Планировщик заданий”, “Планировщик CRON” или что-то подобное.
При добавлении нового задания мы указываем путь к служебному скрипту и какой службой запустить этот скрипт (в нашем случае скрипт PHP и запускаем мы его утилитой /usr/local/bin/php). Как раз выбор утилиты для запуска и путь до скрипта зависят от настроек хостинга и у каждого хостера они могут быть различными, и чаще всего эти настройки описаны в справке вашего хостинга.
На хостингах без панели управления эта процедура делается из консоли путем редактирования файла /etc/crontab и добавлением в этот файл строк с заданиями, или через подключение вложенных файлов с заданиями для каждого сайта. Это уже каждый админ настраивает как ему удобно.
Пути к скриптам для популярных CMS
Bitrix
~/bitrix/modules/main/tools/cron_events.php
WordPress
~/wp-cron.php
Нюансы настройки
В CMS Битрикс есть необходимость кроме запуска файла /bitrix/modules/main/tools/cron_events.php определить несколько констант для корректной работы фоновых заданий. Об этом подробно описано в статье документации или можно воспользоваться модулем “Агенты на кроне” из маркетплейса битрикса.
Как проверить, что планировщик успешно работает
В CMS Битрикс можно посмотреть в админке на странице “Настройки” -> “Настройки продукта” -> “Агенты”. В таблице со списком агентов в колонке “Последний запуск” должно быть время не более 1 минуты назад, и это время должно меняться каждую минуту.
В CMS WordPress можно на вкладке админки “Инструменты” -> “Здоровье сайта”. Если на странице спустя минуту не появится сообщение “Ваш сайт не смог выполнить петлевой запрос”, то значит CRON работает.
Как узнать почему не работает задание и исправить ошибки
Посмотреть ошибки можно путем запуска скрипта из созданного нами задания на хостинге из командной строки. Тут мы сразу увидим ошибки, которые могли возникнуть, или сообщения об успешной работе скрипта.
Общие рекомендации по настройке CRON
- Лучше всего настраивать выполнение заданий и интервалом 1 раз в минуту, обычно такой интервал рекомендуют разработчики CMS.
- Настраивать планировщик нужно при каждом новом развертывании сайта на новом хостинге, например, при переезде на новый хостинг.
- Если есть необходимость откорректировать служебный скрипт сайта под собственные нужды, то лучше для этого сначала сделать копию скрипта и все изменения проводить в копии, так у вас всегда будет возможность вернуться к оригинальному файлу.
Резюме
Настраивать планировщик заданий CRON нужно в обязательном порядке, ведь от этого завист скорость работы вашего сайта, а это влияет на ранжирование сайта поисковыми машинами.