
JavaScript для тех, кто пришёл из PHP или Python
Вы уже пишете на PHP или Python и решили добавить JavaScript. Разбираем, что перенесётся из старого опыта без боли, а что придётся выучить заново — и с чего начать, чтобы не переучиваться потом.

Вы уже пишете на PHP или Python и решили добавить JavaScript. Разбираем, что перенесётся из старого опыта без боли, а что придётся выучить заново — и с чего начать, чтобы не переучиваться потом.

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

Запрос отдаётся за 800 мс, а бизнес-логика в нём — 30 мс. Разбираем, как Symfony Profiler и Blackfire показывают, куда уходит остальное время, и на какие цифры смотреть в первую очередь.

Под нагрузкой ORM превращается в узкое место: N+1, распухший UnitOfWork и hydration съедают память и время. Разбираем, что ломается первым и как это мерить.

Почему контейнер Symfony не читает конфиги на каждый запрос, как он превращается в один PHP-класс и что случается, когда вы забываете про lazy-сервисы под нагрузкой.

Приложение на Symfony 6.4 начало отдавать ответы по 3-4 секунды под нагрузкой при нормальном CPU. Разбираем, как искали причину без Web Profiler и что оказалось виновато.

Профилировщик Symfony по умолчанию не работает в prod, а blackfire включают не всегда. Разбираем, где искать реальные тормоза без dev-профайлера и какие паттерны ловить на ревью.

Batch-скрипт на Doctrine ORM съедает гигабайты и падает с Allowed memory size exhausted на десятках тысяч сущностей. Разбираем, почему EntityManager держит всё в памяти и как это лечить.

Symfony-приложение отдаёт 502 на пиковой нагрузке, а локально всё летает. Разбираем, где реально уходит время под трафиком и чем профилировать прод без остановки сервиса.

Прогрев контейнера на деплое, тегированная инвалидация и dogpile под пиковым трафиком — где кеш Symfony 6.x/7.x подводит первым и как это ловить.

Прогрев кеша Symfony на деплое и инвалидация закешированных ответов — две разные задачи, которые часто путают. Разбираем, чем отличается cache:warmup от инвалидации через теги и где всё это ломается на проде.

Между входящим HTTP-запросом и ответом Symfony проходит через шесть событий HttpKernel. Разбираем, какое событие за что отвечает и где чаще всего ломается обработка запроса.