
Symfony Messenger под нагрузкой: где очередь ломается первой
Воркер держит соединение с базой часами, retry дублирует платёж, а очередь растёт на сотнях сообщений в секунду. Разбираем, что именно ломается в Symfony Messenger и как это чинить.

Воркер держит соединение с базой часами, retry дублирует платёж, а очередь растёт на сотнях сообщений в секунду. Разбираем, что именно ломается в Symfony Messenger и как это чинить.

Когда логика после регистрации пользователя обрастает уведомлениями, начислением бонусов и логами, контроллер превращается в кашу. Событийная модель Symfony разгружает его — если знать разницу между слушателем и подписчиком и не наступить на порядок вызовов.

EventListener и EventSubscriber кажутся простыми, пока порядок вызова не начинает зависеть от загрузки бандлов, а бизнес-логика тихо не срабатывает дважды. Разбираем частые грабли Symfony 7.x.

Слушатель, который делает HTTP-запрос внутри kernel.request, добавляет эти миллисекунды к каждому запросу приложения. Разбираем, что проверить в событийной подсистеме до выката.

Autowiring экономит время в разработке, но на проде даёт скрытые расходы: холодная сборка контейнера, лишние публичные сервисы, дубли инстансов. Разбираем, что проверить перед деплоем Symfony 6.x/7.x.

Autowiring закрывает 90% случаев регистрации сервисов в Symfony, но ломается на скалярах, интерфейсах с двумя реализациями и коллекциях по тегам. Разбираем, когда чего хватает и чем платишь.

Autowiring и autoconfigure убирают ручную регистрацию сервисов, но ломаются на интерфейсах, скалярных аргументах и множественных реализациях. Разбираем, чем платить за каждый подход.

Команды падают в cron без объяснений, потребляют гигабайты памяти на длинных выборках, а тесты зелёные. Разбираем, почему консоль Symfony ведёт себя не так, как ждёшь, и как это чинить.

За полчаса вы соберёте рабочую форму на Symfony 7.x: класс формы, рендер в шаблоне, обработку в контроллере и валидацию. С проверкой на каждом шаге и разбором типичных ошибок.

Список из 50 заказов делает 51 запрос к базе, а выгрузка в CSV съедает всю память. Разбираем, чем платить за ленивую загрузку Doctrine и как её приручить в Symfony.

Прежде чем настраивать вход в приложение на Symfony, разберитесь с тремя понятиями: аутентификатор, провайдер пользователей и firewall. Иначе первая же ошибка в security.yaml остановит вас на полчаса.

Что вы получите в конце: рабочий шаблон Twig в Symfony, который передаёт данные из контроллера, наследует базовую разметку и не падает на пустых переменных. На всё уйдёт около 30 минут.