Среда:
- Laravel: 11.x
- PHP: 8.3
- Веб-сервер: Nginx
- Хостинг: Службы приложений Azure
- Настройка:
Одна служба приложений запускает основное приложение Laravel. - Отдельная служба приложений обрабатывает запланированные задачи (cron).
Мы отправляем события Laravel следующим образом:
Код: Выделить всё
event(new ApplicationStatusChanged($application));
Проверьте прямой запрос GET на наличие теста и получите то же самое.
Этого не происходит в локальной среде разработки.
Мы пытаемся понять:
- Может ли это быть связано с архитектурой службы приложений Azure, репликацией развертывания или неправильной конфигурацией Nginx?
Почему синхронные события Laravel могут запускаться несколько раз в такой производственной настройке?
Мы исключили:
- Не использовать MustQueue ни для события, ни для прослушивателя — все они синхронны.
- Прослушиватели не вносят изменений, которые могли бы перезапустить событие.
- Подтверждено, что это не повторные попытки задания или не связанные с очередью (мы не ставим в очередь).
- Никакие повторяющиеся запросы не достигают конечной точки.
- Кэш полностью очищен (конфигурация, маршрут, событие, и т. д.).
- Полностью остановлена служба приложений cron — проблема не устранена
Подробнее здесь: https://stackoverflow.com/questions/796 ... p-services
Мобильная версия