← К заметкам

Заметки

Как писать агент в модуле

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

Каркас класса в локальном модуле:

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.