Перейти к основному содержимому

Агенты: Хиты vs Cron

Агенты — технология Битрикса для выполнения фоновых задач по расписанию. С их помощью отправляется почта, очищается кеш, обновляются курсы валют, импортируются товары и тп.

Существует два способа запуска этих задач: на хитах (когда на сайт заходят люди) и на Cron (по системному таймеру сервера).


Агенты на хитах (По умолчанию)

В этом режиме Битрикс проверяет наличие задач каждый раз, когда кто-то открывает любую страницу сайта.

  • Как это работает:

    1. Пользователь запрашивает страницу.
    2. В конце генерации страницы Битрикс проверяет таблицу b_agent.
    3. Если есть задачи, время запуска которых пришло, Битрикс выполняет их прямо в процессе загрузки страницы.
    4. Только после выполнения агента пользователь получает свой контент.
  • Плюсы:

    • Работает "из коробки" на любом хостинге.
    • Не требует доступа к SSH или настройкам сервера.
  • Минусы:

    • Тормоза для пользователей: Если агент тяжелый (например, выгрузка 1000 товаров), случайный пользователь будет ждать загрузки страницы 30 секунд.
    • Нестабильность: Если на сайт никто не заходит, агенты не выполняются. Почта не уйдет, пока кто-то не откроет сайт.
    • Нагрузка: Если одновременно пришло много людей, агенты могут запускаться чаще, чем нужно, создавая пиковую нагрузку.

Агенты на Cron (Рекомендуемый способ)

В этом режиме выполнение задач полностью отвязывается от визитов пользователей и передается планировщику операционной системы Linux.

  • Как это работает:

    • Специальный скрипт запускается сервером (например, каждую минуту).
    • Он проверяет таблицу агентов и выполняет их в фоновом режиме.
    • Пользователи вообще не участвуют в этом процессе.
  • Плюсы:

    • Мгновенная работа сайта: Пользователи больше не ждут завершения фоновых задач.
    • Предсказуемость: Агенты выполняются строго по расписанию, даже если на сайте нет посетителей.
    • Ресурсы: Можно выделить больше памяти и времени на выполнение PHP-скриптов в консольном режиме.
  • Минусы:

    • Требует настройки через консоль (SSH) или панель управления хостингом.

Сравнение подходов

ПараметрНа хитахНа Cron
Скорость сайтаМожет замедлятьсяВсегда быстро
Точность времениЗависит от трафикаСтрого каждую минуту
Сложность настройкиНольТребует навыков администрирования
Надежность почтыСредняяВысокая
Подходит дляМаленьких сайтов / ВизитокМагазинов / Высоконагруженных проектов

Ещё советы по агентам

  1. Проверка выполнения: В админке (Настройки -> Настройки продукта -> Агенты) смотрите поле "Последний запуск". Если там старая дата — Cron не работает.
  2. Зацикливание: Если агент выдает фатальную ошибку, он может пытаться запуститься снова и снова. Проверяйте логи ошибок сервера.
  3. Периодичность: Если вы ставите агенту интервал 60 секунд, а Cron запускается раз в 5 минут, агент будет выполняться раз в 5 минут. Частота Cron — это минимально возможный интервал.
  4. Разделение: В идеале, почту (CEvent::CheckEvents) и агентов (CAgent::CheckAgents) стоит разделять на два разных скрипта в Cron для еще большей стабильности.