Статьи

Разборы из практики: highload PHP, архитектура и trade-offs, надёжность, команды. Один факт = одна цифра — всё, что здесь написано, уже проверено в рабочих проектах.

15.09.2026 · PHP · PHPUnit · Doctrine · производительность

150 запросов на один flush, и 4343 зелёных теста. Как я делал детектор N+1 и как он сам меня обманывал

4343 зелёных теста и 150 лишних запросов на один flush. Как появился query-guard — расширение PHPUnit, которое ищет N+1 по живой трассе запросов, почему EXPLAIN на тестовой базе бесполезен и как инструмент против тихих отказов сам четыре раза молчал.

PHPPHPUnitDoctrineLaravelПроизводительность

24.08.2026 · базы данных · производительность · бенчмаркинг

Меня подняли на смех за ответ про VIEW. Я поднял MySQL 8.4 и PostgreSQL 17 и померил

Одинаковые данные, одинаковые сценарии, медиана семи замеров: простая view бесплатна, один CAST делает агрегат дороже в тринадцать раз, каскад из трёх view в MySQL вдвое быстрее прямого запроса, а сводная таблица обгоняет всё на порядки. Планы, буферы, временные таблицы и память — что VIEW на самом деле стоит в MySQL 8.4 и PostgreSQL 17.

MySQLPostgreSQLSQLПроизводительностьБенчмаркинг

20.08.2026 · PHP · Symfony · OpenAPI

Современный API Reference в Symfony через Scalar

У Symfony не было официальной интеграции со Scalar — красивым open-source-рендерером API Reference, после которого Swagger UI выглядит устаревшим. Бандл, который собрался за вечер и полировался неделю: один маршрут /scalar, любой OpenAPI-документ, живой 201 на Symfony 8.1, CI-война с GITHUB_TOKEN и предложение официальной интеграции (discussion #9920).

PHPSymfonyOpenAPIScalarAPI Reference

17.08.2026 · PHP · архитектура · тестирование

PHPArkitect: архитектурные правила как исполняемый код

Почему архитектура «гниёт» молча и как превратить границы в проверки CI: правила пишутся на PHP и читаются как тесты, 19 правил модульного монолита из публичного проекта, baseline-стратегия для legacy, сравнение с deptrac и phpat.

PHPАрхитектураТестированиеCI/CDМодульность

21.08.2026 · реалтайм · highload PHP · архитектура

Live-аукцион на Symfony: шесть шагов и шесть ошибок, которые я успел сделать

Пошаговая сборка живого аукциона на понижение и разбор собственных ошибок: автомат на 16 статусов, у которого переходы никто не вызывал; ставки, проходившие после конца торгов; метрика, которая улучшалась от отказов участникам; команда восстановления, падавшая от того, от чего восстанавливает. Код, цифры и SLO из публичного проекта.

SymfonyPHPРеалтаймRedisMercureАрхитектура

10.08.2026 · платежи · highload PHP · архитектура

Идемпотентность и retry в платёжном ядре: строим операции, которые нельзя задвоить и нельзя забыть

Почему повторный запрос не равен повторной операции, как контракт exactly-once работает на реальном ядре: двухфазный платёж hold → capture, retry по правилам, балансировка между шлюзами, рекарринг, наблюдаемость и сверки. Кейс «Платежи РОСШТРАФЫ»: −25% ошибочных операций, +~10% конверсия.

ПлатежиPHPHighloadАрхитектураНадёжность

06.08.2026 · PHP highload · архитектура

Hybrid sync/async: как генерировать документы под нагрузкой и не ловить таймауты

Почему синхронная генерация документов в HTTP-запросе ломает UX, инфраструктуру и бизнес-процессы клиентов — и как гибридная схема на RabbitMQ решает проблему: где провести границу, как устроена очередь задач со статусами, что делать с нагрузкой, интеграциями и 15 граблями асинхронности.

RabbitMQPHPHighloadАрхитектура