← К документации

Ядро

Агенты и фоновые задания

Когда подходит агент, что означает его расписание и чего не хватает простой таблице очереди.

Агент возвращает следующий вызов

Агент — зарегистрированный вызов PHP, а не отдельный постоянно работающий процесс. Ядро запускает его при обработке агентов. Возврат строки оставляет вызов в расписании; пустая строка завершает одноразовый агент.

<?php

namespace Test\Example;

final class Maintenance {
    public static function tick(): string {
        // Вызов короткой прикладной операции модуля.
        return '\\Test\Example\Maintenance::tick();';
    }
}

Метод размещается в классе локального модуля с настроенной автозагрузкой. Комментарий в примере обозначает место работы: сам каркас ничего не синхронизирует.

Интервал не обещает точное время

При периодическом расписании следующая дата вычисляется относительно планового запуска; при непериодическом — относительно завершения предыдущего. Фактическое исполнение зависит от запуска обработчика агентов и длительности задач.

Настройка cron разобрана в отдельной странице. Перенос агентов на cron не превращает длительную операцию в параллельную очередь.

Что требуется очереди

Таблицы с полями STATUS и PAYLOAD недостаточно. Работнику нужны атомарный захват задания, срок аренды, счётчик попыток и сохранение причины ошибки. Статус done выставляется только после подтверждённого результата операции.

Если PHP завершился после внешней отправки, но до записи done, повторный запуск может отправить данные ещё раз. Для таких операций нужен прикладной ключ, по которому получатель или ваша система распознаёт повтор. Простое переключение new → done без выполнения работы не является примером очереди.

Источники