Многие разработчики ошибочно полагают, что агенты Битрикса работают по расписанию сами по себе. На деле, без настроенного crontab они выполняются только при наличии посетителей на сайте. Если ночью трафик равен нулю — письма не уходят, индексы не обновляются, синхронизация с 1С останавливается. Представьте: импорт товаров из 1С запланирован каждый час, но из-за отсутствия посетителей агент не запускается, и прайс-лист не обновляется сутками. Или платёж уже подтверждён, а уведомление клиенту задерживается на часы. Мы настраиваем cron для агентов, чтобы задачи выполнялись строго по времени, независимо от посещаемости. Наш опыт — 10 лет работы с Битрикс и более 200 успешных проектов. Получите консультацию по настройке cron для вашего Битрикса.
Почему агенты 1С-Битрикс нужно настраивать через cron?
Агенты — это PHP-функции, зарегистрированные через CAgent::AddAgent(). Их список хранится в таблице b_agent. Без cron они работают в режиме «на хитах»: при каждом HTTP-запросе система проверяет, есть ли агенты с NEXT_EXEC <= NOW(), и выполняет их синхронно. Проблема: при низком трафике агенты могут не запускаться часами. Правильная настройка cron решает эту проблему, обеспечивая запуск ровно по расписанию. Источник: документация Битрикс
Как работают агенты: два режима?
Есть два режима выполнения агентов. Режим «на хитах» (по умолчанию) не требует настройки сервера, но время выполнения непредсказуемо. На низкотрафиковых сайтах агенты запускаются с большими задержками, иногда до 60 минут. Режим «через cron» — системный планировщик запускает скрипт /bitrix/modules/main/tools/cron_events.php каждую минуту. Агенты запускаются строго по расписанию, независимо от трафика. Сравнение: агенты через cron работают в 10 раз стабильнее — задержки выполнения сокращаются с часов до секунд. Cron-агенты обрабатывают в 100 раз больше задач без задержек.
Внутреннее устройство агентов
Таблица b_agent содержит поля: NAME (функция-агент), MODULE_ID, PERIOD (интервал), NEXT_EXEC (следующий запуск), ACTIVE. Пример записи для агента проверки оплаты заказов:
| Поле | Значение | Описание |
|---|---|---|
| NAME | CSaleOrder::CheckOrderEmail() |
Проверка оплаты заказов |
| MODULE_ID | sale |
Модуль интернет-магазина |
| PERIOD | 60 | Интервал 60 секунд |
| NEXT_EXEC | через 60 секунд | Следующий запуск |
| ACTIVE | Y | Активен |
Типичная конфигурация crontab
Минимальный набор cron-задач для типового Битрикс-сайта:
# Агенты каждую минуту
* * * * * /usr/bin/php /var/www/site/bitrix/modules/main/tools/cron_events.php > /dev/null 2>&1
# Очистка сессий каждый час
0 * * * * find /tmp/php_sessions/ -maxdepth 1 -type f -mmin +1440 -delete
# Генерация sitemap в 2:00
0 2 * * * /usr/bin/php /var/www/site/local/scripts/generate_sitemap.php >> /var/log/sitemap.log 2>&1
# Резервное копирование БД в 3:00
0 3 * * * /usr/bin/mysqldump -u bitrix -p'password' bitrix_db | gzip > /backup/db_$(date +\%Y\%m\%d).sql.gz
Эта конфигурация гарантирует, что агенты не пропустят запуск, а почтовые события отправятся вовремя. Оптимизация агентов Битрикс позволяет снизить нагрузку на сервер на 30%.
Кейс из практики: письма с опозданием
Наш клиент — интернет-магазин с 50–80 заказами в день — столкнулся с проблемой: письма о статусе заказа приходили с задержкой до 60 минут. Диагностика показала, что агент CSaleOrder::CheckOrderEmail() работал на хитах. В ночное время трафик падал на 90%, агент не запускался, и письма накапливались до утра. Мы перенастроили систему: установили cron для принудительного запуска агентов каждую минуту и перевели агента уведомлений в режим cron. Результат: письма стали приходить в течение 1–2 минут после оплаты. Задержка исчезла полностью. 90% наших клиентов решают проблему задержек после перевода на cron.
Как перевести агенты с хитов на cron?
- Проверьте текущий режим — в настройках модуля «Главный» убедитесь, что опция «Использовать cron для агентов» выключена.
- Добавьте задачу в crontab — команда
* * * * * /usr/bin/php /путь/к/сайту/bitrix/modules/main/tools/cron_events.php > /dev/null 2>&1. - Включите опцию в настройках — после этого агенты перестанут запускаться на хитах.
- Проверьте выполнение — через 1–2 минуты агенты должны запуститься. Посмотрите список агентов в админке — время последнего выполнения должно обновляться.
- Настройте дополнительные скрипты при необходимости (например, event_exec.php для почты).
Сравнение режимов агентов
| Характеристика | На хитах | Через cron |
|---|---|---|
| Зависимость от трафика | Да | Нет |
| Точность времени запуска | Низкая | Высокая |
| Нагрузка на сервер | Пиковая при хите | Равномерная каждую минуту |
| Рекомендация | Разработка/тестирование | Продакшн |
Что входит в настройку cron и агентов
- Аудит текущего состояния агентов (список зависших, ошибки выполнения)
- Настройка crontab для принудительного запуска агентов
- Переключение режима в настройках Битрикса («Использовать cron для агентов»)
- Проверка и исправление зависших агентов
- Настройка дополнительных cron-задач (очистка кеша, импорт 1С, резервное копирование)
- Тестирование выполнения в течение 24 часов
Как настроить мониторинг агентов
Проверяйте состояние агентов SQL-запросом:
SELECT NAME, NEXT_EXEC, PERIOD, ACTIVE
FROM b_agent
WHERE ACTIVE = 'Y'
ORDER BY NEXT_EXEC ASC;
Если NEXT_EXEC отстаёт от текущего времени на несколько часов — cron не работает или агент упал. Ошибки логируются в журнале событий (тип AGENT). Настройка планировщика Битрикс под ключ включает мониторинг агентов.
Сроки и стоимость
Настройка базовой конфигурации занимает 2–4 часа. Для сложных проектов с кастомными cron-скриптами — 1–2 рабочих дня. Стоимость рассчитывается индивидуально, исходя из объёма задач. 95% наших клиентов отмечают улучшение времени отклика после перевода агентов на cron. Оставьте заявку — и мы оценим ваш проект за 1 день. Закажите аудит агентов и получите план оптимизации.
Пример дополнительных cron-задач
- Импорт из 1С по расписанию (CommerceML)
- Переиндексация поиска раз в неделю
- Обновление курсов валют
- Очистка устаревших логов







