Агенты Битрикс или cron: правильная настройка
Агенты на хитах зависят от посещаемости, а cron — от серверного расписания. Разбираем выбор режима, окружение запуска и контроль фоновых задач.
Агент в 1С-Битрикс — запланированная PHP-функция. Он может запускаться во время пользовательских обращений или через системное расписание. Правильный выбор зависит не от моды, а от требуемой регулярности, нагрузки и способности контролировать результат.
Когда достаточно выполнения на хитах
Редкая короткая задача на посещаемом сайте может безопасно выполняться на хитах. Но сайт с низким трафиком не гарантирует своевременный запуск, а тяжёлый агент увеличивает время ответа случайному пользователю.
Когда нужен cron
Cron выбирают для очередей, обменов, рассылок, резервного копирования и задач с требованием к времени. Он не исправляет плохой агент: бесконечный цикл, отсутствие блокировки или неограниченный пакет данных останутся проблемой.
Пользователь и окружение запуска
Запускайте задачу от того же системного пользователя, которому принадлежат рабочие файлы веб-приложения. Cron от root способен создать кеш и временные файлы, недоступные PHP-FPM. Укажите абсолютный путь к PHP и документному корню; не рассчитывайте на переменные окружения интерактивной оболочки.
*/5 * * * * /usr/bin/php -f /var/www/site/bitrix/modules/main/tools/cron_events.php >> /var/log/bitrix-agents.log 2>&1Это пример структуры, а не готовая команда для любого сервера. Фактический путь, способ запуска и рекомендуемый скрипт сверяйте с установленной версией и окружением.
Защита от параллельного запуска
Если один цикл длится дольше периода cron, второй процесс может начать ту же работу. Используйте блокировку на уровне задания или приложения, делите объём на ограниченные пакеты и храните позицию продолжения. Идемпотентность особенно важна для писем, оплат и передачи лидов.
Логи и мониторинг
- записывайте начало, завершение, длительность и количество обработанных объектов;
- отдельно фиксируйте исключения и последнюю успешную дату;
- оповещайте, если задача не завершалась дольше допустимого интервала;
- ограничивайте размер и срок хранения журналов.
Проверка после настройки
Создайте тестовую задачу с безопасным эффектом, дождитесь двух интервалов и проверьте пользователя процесса, права новых файлов, часовой пояс, журнал и отсутствие параллельных копий. Затем проверьте очередь почты, обмены и другие зависимые процессы.
Итогом настройки должен быть не просто рядок в crontab, а наблюдаемая система: понятно, когда задача запускалась, что обработала и почему остановилась.