← 1С-Битрикс
1С-Битрикс

Агенты и cron в 1С-Битрикс: как вынести фоновые задачи из хитов

Агенты и cron в 1С-Битрикс — фоновые задачи и расписание

В 1С-Битрикс часть служебных операций может выполняться через механизм агентов. Для небольшого проекта это часто незаметно, но по мере роста сайта фоновые задачи начинают влиять на время ответа: первый посетитель после паузы может фактически «запустить» очистку данных, пересчёт, отправку уведомлений или другую тяжёлую операцию.

Если задача должна выполняться регулярно и не зависит от открытия конкретной страницы, её разумно отделить от пользовательского запроса. Для этого используют cron и стандартный механизм запуска агентов.

Чем агент отличается от обычного cron-задания

Агент хранится внутри Битрикс: система знает функцию, время следующего запуска и периодичность. Cron находится на уровне операционной системы и просто запускает команду по расписанию. На практике эти механизмы удобно объединять: расписание задаёт cron, а уже стандартный скрипт Битрикс обрабатывает очередь агентов.

Так сохраняется управление агентами из административной части, но тяжёлая фоновая работа перестаёт зависеть от реального посетителя сайта.

Когда стоит переносить выполнение с хитов

  • на сайте есть регулярные импорты, синхронизации или очистка данных;
  • периодически первый запрос открывается заметно дольше остальных;
  • почтовые события и фоновые операции накапливаются при низкой посещаемости;
  • агенты обращаются к внешним API или обрабатывают большие объёмы данных;
  • важно, чтобы задача запускалась по расписанию, а не при появлении пользователя.

Почему нельзя просто добавить второй запуск

Одна из типичных ошибок — оставить старый механизм выполнения и параллельно добавить собственный cron. В результате одна логика может выполняться из двух контекстов. Для операций без защиты от повторного запуска это приводит к дублям, повторным письмам, двойному импорту или конкурирующим процессам.

Перед переносом фоновых задач сначала определите, кто именно будет отвечать за запуск: хит пользователя, стандартный cron Битрикс или отдельный серверный сценарий.

Что проверить после настройки

Сам факт наличия строки в crontab ещё не означает, что всё работает. Нужно проверить системный журнал cron, PHP-ошибки, время последнего выполнения агента и реальный результат задачи. Особенно важно убедиться, что в CLI используется нужная версия PHP и тот же набор расширений, который необходим проекту.

Если агент может выполняться долго, полезно добавить блокировку от параллельного старта и отдельное журналирование начала, окончания и ошибки. Тогда при сбое будет понятно, задача не стартовала вообще или остановилась уже внутри бизнес-логики.

Какие задачи лучше не превращать в агенты

Если операция должна запускаться в строго определённую минуту, требует отдельного окружения или относится к самостоятельному сервисному скрипту, обычный системный cron часто проще и прозрачнее. Агент удобен там, где задача логически является частью проекта Битрикс и ею нужно управлять вместе с приложением.

Безопасная схема переноса

  1. Составьте список активных агентов и измерьте время их выполнения.
  2. Отдельно отметьте тяжёлые операции и задачи, которые должны работать при низкой посещаемости.
  3. Настройте стандартный запуск агентов через cron согласно конфигурации сервера.
  4. Проверьте, что выполнение на хитах не создаёт второй параллельный сценарий.
  5. Добавьте логирование для критичных фоновых операций.
  6. После переноса несколько дней контролируйте время запуска и ошибки.

Если сайт периодически «подвисает» без очевидной причины, фоновые процессы стоит проверять вместе с PHP, базой данных и кешированием. Общий порядок диагностики собран в статье про ускорение сайта на 1С-Битрикс.

Настройку cron, PHP-FPM и фоновых процессов можно выполнять в рамках технической поддержки сайта.

Спасибо. Ваше сообщение было успешно отправлено.
Мы свяжемся с Вами в ближайшее время.