
В системах на базе 1С-Битрикс cron выполняет ключевую роль в автоматизации фоновых процессов. Это могут быть задачи по очистке кеша, отправке email-рассылок, обработке очередей, пересчёту цен, интеграции с внешними сервисами. В отличие от выполнения по запросу пользователя, cron запускает скрипты по расписанию, разгружая сервер в пиковые часы и обеспечивая стабильную работу сайта.
В Битрикс задания cron настраиваются через файл bitrix/php_interface/init.php или через планировщик задач на уровне ОС (например, crontab -e в Linux). При этом важно использовать не браузерный вызов скриптов, а запуск через консоль, указывая путь к php и cron_events.php, например: /usr/bin/php /var/www/site/bitrix/modules/main/tools/cron_events.php. Это исключает влияние браузера и позволяет системе работать в полностью автономном режиме.
Без правильно настроенного cron множество критичных функций в Битрикс остаются неактивными: агенты не выполняются вовремя, очереди не обрабатываются, бэкапы не создаются. Особенно это актуально для высоконагруженных проектов, где скорость реакции системы на события напрямую влияет на бизнес-показатели. Использование cron становится обязательным элементом технической поддержки и сопровождения проекта.
Рекомендуется выносить наиболее ресурсоёмкие задачи (например, интеграции с CRM или пересчёт каталога) в отдельные скрипты и запускать их через cron в ночное время. Это снижает нагрузку на сервер и обеспечивает предсказуемость выполнения. Также важно настроить логирование задач cron, чтобы оперативно выявлять сбои и оптимизировать производительность.
Что такое cron и как он используется в задачах Битрикс
- Автоматическая отправка писем (рассылки, уведомления).
- Обновление кеша и индексирование поискового модуля.
- Резервное копирование базы данных и файлов сайта.
- Сбор и отправка аналитических данных.
- Синхронизация с внешними системами (CRM, 1С, маркетплейсы).
Для работы с cron в Битрикс создаются отдельные PHP-скрипты в директории /bitrix/php_interface/ или /local/. Эти скрипты регистрируются в системном crontab. Пример команды для добавления в cron:
* * * * * /usr/bin/php /var/www/site/bitrix/php_interface/cron_tasks/agent_runner.php
Важно использовать абсолютные пути и указать нужную версию интерпретатора PHP. Все cron-скрипты должны запускаться от имени пользователя, под которым работает веб-сервер, иначе возможны ошибки доступа к файлам и окружению.
Битрикс использует так называемые агенты – это задачи, регистрируемые в базе данных и выполняемые при загрузке страниц сайта. Однако при большом количестве агентов нагрузка на сервер возрастает. Чтобы разгрузить сайт, агенты можно переключить на выполнение через cron. Для этого в файле /bitrix/.settings.php необходимо установить параметр:
'agents' => [ 'execution_time' => 'cron' ]
После этого агенты перестанут запускаться при посещении сайта и будут выполняться только через специальный скрипт:
/usr/bin/php /var/www/site/bitrix/modules/main/tools/cron_events.php
Рекомендуется настроить cron с интервалом 1 минута для точного выполнения агентов и фоновых задач. Это обеспечивает стабильную работу сайта без влияния на пользовательские запросы.
Как настроить запуск агента через cron в Битрикс
Для запуска агентов через cron необходимо отключить их выполнение при обычных пользовательских запросах. Откройте файл /bitrix/php_interface/dbconn.php и добавьте строку:
define("BX_CRONTAB_SUPPORT", true);
Затем включите выполнение агентов только в cron, добавив:
define("BX_CRONTAB", true);
Следующий шаг – создать скрипт, запускающий выполнение агентов. Обычно используется файл /bitrix/modules/main/tools/cron_events.php. Убедитесь, что у веб-сервера и PHP есть права на его выполнение.
Добавьте задание в cron. Выполните команду crontab -e от имени пользователя, под которым работает веб-сервер. Пример строки для запуска каждую минуту:
* * * * * /usr/bin/php -f /var/www/html/bitrix/modules/main/tools/cron_events.php
Путь к PHP и скрипту указывайте абсолютный. Убедитесь, что PHP запускается с тем же окружением, что и в браузере (включая переменные среды и доступ к нужным модулям).
Разница между агентами и планировщиком cron в Битрикс
Cron в Битрикс используется для регулярного запуска системных задач вне зависимости от активности сайта. Он выполняет скрипты по заданному времени, указанному в crontab. Для запуска агентов через cron используется файл bitrix/modules/main/tools/cron_events.php, что позволяет обойти зависимость от трафика.
Агенты подходят для задач, не критичных к точности выполнения: очистка логов, отправка писем, проверка статусов. Для тяжелых или ресурсозатратных операций – экспорт данных, интеграции, резервное копирование – рекомендуется cron, так как он обеспечивает стабильность и управляемость выполнения.
При высоких нагрузках использование только агентов может привести к замедлению отклика сайта. Оптимальное решение – отключить выполнение агентов при пользовательских обращениях (define("BX_CRONTAB_SUPPORT", true)) и перевести их запуск на cron. Это уменьшает нагрузку на веб-сервер и повышает предсказуемость работы фона.
Где находится файл cron_tasks.php и как его запускать
Файл cron_tasks.php размещается в директории /bitrix/modules/main/tools/. Он используется для запуска планировщика задач в Битрикс и предназначен для вызова из cron-сценариев на уровне операционной системы.
Для корректного запуска необходимо использовать интерпретатор PHP с указанием полного пути к файлу. Пример команды для cron:
* * * * * /usr/bin/php -f /var/www/ваш_сайт/bitrix/modules/main/tools/cron_tasks.php
Путь к PHP может отличаться в зависимости от конфигурации сервера. Уточнить его можно командой:
which php
Перед запуском убедитесь, что файл /bitrix/php_interface/cron_events.php существует и содержит вызываемые события. Если файл отсутствует, планировщик не выполнит ни одну задачу.
Рекомендуется создавать отдельного системного пользователя с минимальными правами и настраивать задачи cron от его имени. Это снижает риски и упрощает администрирование.
* * * * * /usr/bin/php -f /var/www/ваш_сайт/bitrix/modules/main/tools/cron_tasks.php >> /var/log/bitrix_cron.log 2>&1
Права доступа к cron_tasks.php должны позволять чтение и исполнение от имени пользователя, под которым работает cron. Проверить можно с помощью команды:
ls -l /bitrix/modules/main/tools/cron_tasks.php
Если используется несколько сайтов на одном ядре, необходимо учитывать, что cron_tasks.php запускается в контексте основного сайта. Для отдельных сайтов потребуется переопределение переменной SITE_ID внутри пользовательского кода задач.
Настройка crontab для запуска задач Битрикс по расписанию
Для корректной работы агентов и планировщика задач в Битрикс необходимо настроить cron на сервере. Это позволяет выполнять скрипты по расписанию без участия пользователя, снижая нагрузку на веб-интерфейс.
Откройте crontab для текущего пользователя командой:
crontab -e
Добавьте строку для запуска cron-агента Битрикс каждые 5 минут:
*/5 * * * * /usr/bin/php -f /var/www/site/bitrix/modules/main/tools/cron_events.php
Замените /var/www/site на путь к корню вашего проекта. Убедитесь, что PHP-исполняемый файл указан корректно (можно проверить через which php).
Если используется web-агент (по умолчанию), его необходимо отключить, иначе задания будут дублироваться. Для этого в файле /bitrix/php_interface/dbconn.php добавьте строку:
define("BX_CRONTAB_SUPPORT", true);
и включите режим запуска через cron:
define("BX_CRONTAB", true);
Чтобы убедиться в работе cron-задачи, проверьте системный лог или создайте временный лог в скрипте cron_events.php, добавив строку:
file_put_contents('/tmp/cron_test.log', date('Y-m-d H:i:s').PHP_EOL, FILE_APPEND);
Также важно назначить права на выполнение скрипта и доступ к PHP для пользователя cron:
chmod +x /var/www/site/bitrix/modules/main/tools/cron_events.php
Чтобы cron работал с окружением веб-сервера, рекомендуется прописывать переменные окружения в crontab, например:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Для задач с учётом сайта (мультисайтовость), используйте параметр -d:
/usr/bin/php -d site=mysite -f /var/www/site/bitrix/modules/main/tools/cron_events.php
После настройки перезапуск cron-сервиса не требуется. Проверку корректности расписания можно выполнить командой:
grep CRON /var/log/syslog
или
journalctl -u cron
в зависимости от используемой ОС.
Как отследить выполнение cron-задач в логах сервера
Для анализа выполнения cron-задач в Битрикс необходимо проверить системные логи, доступ к которым осуществляется через SSH. Наиболее информативный файл – /var/log/cron или /var/log/syslog (в зависимости от дистрибутива Linux).
Выполните команду grep bitrix /var/log/cron, чтобы найти строки, связанные с задачами пользователя bitrix. Если используется другой пользователь, укажите соответствующее имя. Также можно отфильтровать конкретное время: grep «May 16 03:» /var/log/cron.
При использовании агента cron_events.php убедитесь, что он не конфликтует с планировщиком заданий внутри Битрикс. Неисполнение задач может быть связано с заблокированным агентом или длительной блокировкой предыдущего процесса. Для диагностики активных процессов используйте ps aux | grep cron и top.
Проверка логов – ключевой шаг при отладке. Наличие временных меток, кода возврата и текста ошибок позволяет точно определить, работает ли cron корректно и выполняются ли задачи по расписанию.
Распространённые ошибки при работе с cron в Битрикс и способы их устранения
Ошибка 1: Неверный путь до PHP-интерпретатора. Часто в cron-задаче указывается некорректный путь, например, /usr/bin/php вместо фактического /opt/php8.0/bin/php. Уточнить путь можно командой which php в терминале сервера.
Ошибка 2: Отсутствие прав на выполнение скрипта. Если у скрипта или каталога нет прав на выполнение для пользователя, от имени которого запускается cron, задача не выполнится. Убедитесь, что права доступа к файлу установлены корректно: chmod +x и правильный владелец через chown.
Ошибка 3: Не установлен абсолютный путь к файлам. В cron не работает относительный путь, поскольку текущая директория отличается от корня сайта. Используйте абсолютные пути: /var/www/bitrix/www/bitrix/modules/main/tools/backup.php вместо ./tools/backup.php.
Ошибка 5: Не учтена среда окружения. В cron переменные окружения отличаются от SSH-сессии. Для гарантированной работы указывайте переменные явно или прописывайте их в скрипте: PATH, HOME, USER.
Ошибка 6: Запуск через web-окружение. Использование cron_events.php или cron_frame.php с доступом только через HTTP – ошибка. Для корректной работы cron должен вызываться через CLI PHP: /usr/bin/php -f /путь/к/bitrix/modules/main/tools/cron_events.php.
Ошибка 7: Конфликт версий PHP. На сервере может быть установлено несколько версий PHP. Уточните, какая из них используется по умолчанию в cron и явно задавайте нужную, если проект требует конкретной версии.
Ошибка 8: Несвоевременная регистрация агентов. При миграции или клонировании проекта агенты могут не запускаться. Проверьте настройки: в админке Битрикс перейдите в «Настройки» → «Настройки продукта» → «Автоматические задачи» и убедитесь, что агенты работают через cron, а не через хиты.
Ошибка 9: Отсутствие завершения скриптов. Некоторые скрипты не завершают выполнение или зависают. Установите ограничение времени выполнения: set_time_limit(300); и логируйте ключевые точки исполнения для отслеживания «зависаний».
Ошибка 10: Некорректное расписание. В cron-формате легко ошибиться. Используйте проверенные генераторы расписания и команду crontab -l для контроля текущих задач. Следите за тем, чтобы не создавать дублирующиеся задачи, вызывающие конфликт при одновременном запуске.
Когда стоит использовать cron вместо стандартных агентов Битрикс

Агенты в Битрикс работают только при обращении к сайту, что делает их непредсказуемыми по времени выполнения и ресурсоёмкими при высокой нагрузке. В ряде случаев предпочтительнее использовать cron:
- Обработка больших объемов данных. Для ресурсоёмких задач, таких как массовая пересчётка цен, экспорт каталога или синхронизация с внешними системами, cron обеспечивает стабильное выполнение без зависимости от пользовательской активности.
- Точное расписание. Если необходимо выполнять задачу строго по расписанию (например, каждый час или в определённое время суток), cron гарантирует запуск вне зависимости от посещаемости сайта.
- Минимизация влияния на производительность. Cron-задания выполняются вне веб-сессий, не нагружая веб-сервер при посещении сайта пользователями.
- Автономные задачи. При интеграции с API сторонних систем, cron позволяет организовать стабильный фоновый обмен данными, не дожидаясь активности на сайте.
- Повышение отказоустойчивости. В случае с агентами, при сбое одного скрипта может зависнуть вся цепочка. Cron даёт больше контроля, позволяет изолировать ошибки и гибко управлять логикой запуска.
Использование cron особенно важно на высоконагруженных проектах, где нужно гарантировать выполнение задач независимо от пользовательского трафика и текущей загрузки сайта.
