Агенты
Агенты выполняют роль встроенного планировщика периодических задач платформы, запуская PHP-код по расписанию и возвращая строку вызова для следующей итерации. Чтобы не замедлять открытие страниц посетителям, выполнение агентов переводят на системный cron, а длительные операции защищают от наложения именованными блокировками Connection::lock().
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
Создание агента
-
2
Периодические и однократные
-
3
Отладка агентов
-
4
cron vs hit
Материалы
Официальная документация
-
Итератор Новая дока
Материалы BXMax
Проверь себя
Заказчик жалуется, что агент синхронизации остатков ночью не срабатывает, а днём всё в порядке. В чём дело?
Агенты по умолчанию запускаются на хитах: ночью нет посетителей — нет запусков. Решение — перевести агентов на cron через cron_events.php и опции agents_use_crontab и check_agents по инструкции из документации.
Чем непериодический агент отличается от периодического и когда нужен именно он?
У периодического следующий запуск считается от предыдущего старта, у непериодического — от момента окончания работы. Для тяжёлых агентов нужен непериодический, иначе при долгой работе запуски накладываются.
Импорт в агенте идёт полчаса, и cron раз в десять минут запускает его повторно. Почему встроенная защита не помогла?
Перед выполнением ядро сдвигает DATE_CHECK на LOCK_TIME, 600 секунд, и защищает только от повторного запуска в эти десять минут. Дольше — нужна именованная блокировка Connection::lock() внутри самого агента.
Функция агента отработала, но агент исчез из списка. Что вернула функция?
Пустую строку. Функция агента обязана вернуть строку с кодом следующего вызова; пустой результат ядро понимает как остановку и удаляет агент.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить