Заметки
Как писать агент в модуле
Агент должен быть доступен без открытой страницы пользователя: его класс загружается через модуль, указанный при регистрации. Возвращаемая строка задаёт следующий вызов; пустая строка прекращает повторение агента.
Каркас класса в локальном модуле:
namespace Local\Tools\Agent;
final class QueueAgent {
public static function run(): string {
return '\Local\Tools\Agent\QueueAgent::run();';
}
} Этот каркас пока ничего не обрабатывает. Работу добавляют перед return, ограничивая одну итерацию небольшой порцией очереди. Класс должен быть зарегистрирован в автозагрузке модуля.
При установке агент добавляют через CAgent::AddAgent() с ID своего модуля, при удалении модуля — удаляют. Регистрация на каждом HTTP-запросе создаёт лишние проверки и может привести к дублям.
Не рассчитывайте на $USER из браузера: у агента другой контекст. Для частых или долгих заданий отдельно проверьте, как в этой коробке организован запуск агентов через cron.