Агенты в Битрикс — это механизм для автоматического выполнения определенных действий через регулярные промежутки времени на стороне сервера. По сути, агенты позволяют автоматизировать выполнение задач, которые нужно запускать периодически (ежечасно, ежедневно, еженедельно и т.д.).
Автоматическое выполнение: Агенты автоматически запускаются при открытии сайта пользователями (через выполнение PHP-кода), что позволяет не зависеть от планировщиков задач на сервере (например, cron
). Это удобно для хостингов, где нет доступа к настройке cron
.
Запуск через веб-запросы: Агенты работают таким образом, что их выполнение происходит после обращения пользователя к сайту. Это значит, что агент запускается только когда кто-то посетил сайт. В то же время, агенты не гарантируют точную регулярность выполнения, т.к. выполнение привязано к активности пользователей.
Хранение агентов: Все агенты хранятся в базе данных (таблица b_agent
). В этой таблице указаны данные о:
Интервалы выполнения: Агенты могут быть однократными (выполняются один раз) или многократными (выполняются с определенным интервалом). После выполнения агент либо помечается для повторного запуска через указанный интервал, либо удаляется, если был однократным.
Регистрация агента: Агенты регистрируются при помощи функции CAgent::Add()
. Они записываются в базу данных и ожидают своего выполнения.
Пример регистрации агента:
В этом примере:
MyAgentFunction()
.Выполнение агента: Когда посетитель сайта открывает любую страницу, проверяется наличие агентов для выполнения. Если дата следующего запуска агента совпадает с текущим временем или уже прошла, агент выполняется.
Во время выполнения агент вызывает указанную функцию (или метод класса) и после этого определяет, нужно ли его запускать снова (многократные агенты).
Удаление агента: Если агент был однократным, после его выполнения он удаляется из базы данных. Для многократных агентов дата следующего запуска пересчитывается в зависимости от интервала.
Пример создания агента:
Предположим, у вас есть функция, которая должна очищать временные данные раз в сутки. Вы можете зарегистрировать агента для выполнения этой задачи следующим образом:
Агенты полезны в различных сценариях:
cron
: Агенты не требуют установки cron
на сервере и выполняются автоматически при посещении сайта.Вы можете просмотреть, управлять и отслеживать выполнение агентов через административный интерфейс:
В этом разделе можно:
Агенты в Битрикс — это мощный инструмент автоматизации задач, не требующий сложных настроек сервера. Они полезны для выполнения задач, которые должны запускаться периодически, но не требуют точной привязки к времени. Тем не менее, для критически важных задач с точной периодичностью стоит использовать cron
, так как агенты могут не выполняться вовремя из-за отсутствия посетителей на сайте.