Articles
Field breakdowns: high-load PHP, architecture and trade-offs, reliability, teams. One fact = one number — everything here is already proven in production projects.
Sep 15, 2026 · PHP · PHPUnit · Doctrine · performance
4343 green tests and 150 extra queries in one flush. How query-guard came to be, a PHPUnit extension that finds N+1 in the live query trace, why EXPLAIN on a test database is useless, and how a tool built against silent failures went silent four times itself.
PHPPHPUnitDoctrineLaravelPerformance
Aug 24, 2026 · databases · performance · benchmarking
Identical data, identical scenarios, median of seven runs: a simple view is free, one CAST makes the aggregate thirteen times more expensive, a cascade of three views beats a handwritten query in MySQL by two times, and a summary table wins by orders of magnitude. Plans, buffers, temporary tables and memory — what VIEWs actually cost in MySQL 8.4 and PostgreSQL 17.
MySQLPostgreSQLSQLPerformanceBenchmarking
Aug 20, 2026 · PHP · Symfony · OpenAPI
Symfony had no official Scalar integration — the beautiful open-source API Reference renderer that made Swagger UI look its age. A bundle that took one evening to build and a week to harden: a single /scalar route, any OpenAPI document, a live 201 on Symfony 8.1, a CI war story about GITHUB_TOKEN, and a proposal for official integration (discussion #9920).
PHPSymfonyOpenAPIScalarAPI Reference
Aug 17, 2026 · PHP · architecture · testing
Why architecture dies silently and how to turn boundaries into CI checks: rules are written in PHP and read like tests, 19 rules for a modular monolith from an open-source project, a baseline strategy for legacy, comparison with deptrac and phpat.
PHPArchitectureTestingCI/CDModularity
Aug 21, 2026 · realtime · high-load PHP · architecture
Building a live reverse auction step by step, and a walkthrough of my own mistakes: a state machine whose transitions nobody called, bids accepted after trading had ended, a metric that improved when users got errors, and a recovery command that failed because of the thing it recovers from. Code, numbers, and SLOs from an open-source project.
SymfonyPHPRealtimeRedisMercureArchitecture
Aug 10, 2026 · payments · high-load PHP · architecture
Why a repeated request is not a repeated operation, and how the exactly-once contract works in a real payment core: a two-phase hold → capture payment, retries by rules, balancing across gateways, recurring payments, observability, and reconciliations. The РОСШТРАФЫ payments case: −25% erroneous operations, +~10% conversion.
PaymentsPHPHighloadArchitectureReliability
Aug 6, 2026 · PHP highload · architecture
Why synchronous document generation inside an HTTP request breaks UX, infrastructure, and client business processes — and how a hybrid scheme on RabbitMQ solves it: where to draw the boundary, how a task queue with statuses works, what to do about load, integrations, and 15 async pitfalls.
RabbitMQPHPHighloadArchitecture