Агенты: Хиты vs Cron
Агенты — технология Битрикса для выполнения фоновых задач по расписанию. С их помощью отправляется почта, очищается кеш, обновляются курсы валют, импортируются товары и тп.
Существует два способа запуска этих задач: на хитах (когда на сайт заходят люди) и на Cron (по системному таймеру сервера).
Агенты на хитах (По умолчанию)
В этом режиме Битрикс проверяет наличие задач каждый раз, когда кто-то открывает любую страницу сайта.
-
Как это работает:
- Пользователь запрашивает страницу.
- В конце генерации страницы Битрикс проверяет таблицу
b_agent. - Если есть задачи, время запуска которых пришло, Битрикс выполняет их прямо в процессе загрузки страницы.
- Только после выполнения агента пользователь получает свой контент.
-
Плюсы:
- Работает "из коробки" на любом хостинге.
- Не требует доступа к SSH или настройкам сервера.
-
Минусы:
- Тормоза для пользователей: Если агент тяжелый (например, выгрузка 1000 товаров), случайный пользователь будет ждать загрузки страницы 30 секунд.
- Нестабильность: Если на сайт никто не заходит, агенты не выполняются. Почта не уйдет, пока кто-то не откроет сайт.
- Нагрузка: Если одновременно пришло много людей, агенты могут запускаться чаще, чем нужно, создавая пиковую нагрузку.
Агенты на Cron (Рекомендуемый способ)
В этом режиме выполнение задач полностью отвязывается от визитов пользователей и передается планировщику операционной системы Linux.
-
Как это работает:
- Специальный скрипт запускается сервером (например, каждую минуту).
- Он проверяет таблицу агентов и выполняет их в фоновом режиме.
- Пользователи вообще не участвуют в этом процессе.
-
Плюсы:
- Мгновенная работа сайта: Пользователи больше не ждут завершения фоновых задач.
- Предсказуемость: Агенты выполняются строго по расписанию, даже если на сайте нет посетителей.
- Ресурсы: Можно выделить больше памяти и времени на выполнение PHP-скриптов в консольном режиме.
-
Минусы:
- Требует настройки через консоль (SSH) или панель управления хостингом.
Сравнение подходов
| Параметр | На хитах | На Cron |
|---|---|---|
| Скорость сайта | Может замедляться | Всегда быстро |
| Точность времени | Зависит от трафика | Строго каждую минуту |
| Сложность настройки | Ноль | Требует навыков администрирования |
| Надежность почты | Средняя | Высокая |
| Подходит для | Маленьких сайтов / Визиток | Магазинов / Высоконагруженных проектов |
Ещё советы по агентам
- Проверка выполнения: В админке (Настройки -> Настройки продукта -> Агенты) смотрите поле "Последний запуск". Если там старая дата — Cron не работает.
- Зацикливание: Если агент выдает фатальную ошибку, он может пытаться запуститься снова и снова. Проверяйте логи ошибок сервера.
- Периодичность: Если вы ставите агенту интервал 60 секунд, а Cron запускается раз в 5 минут, агент будет выполняться раз в 5 минут. Частота Cron — это минимально возможный интервал.
- Разделение: В идеале, почту (
CEvent::CheckEvents) и агентов (CAgent::CheckAgents) стоит разделять на два разных скрипта в Cron для еще большей стабильности.