~/blog/tags/php
#php
7 posts · all posts
- php
- software-architecture
- symfony
- doctrine
- backend-development
- performance
- refactoring
- authorization
- best-practices
- caching
- clean-code
- containers
- database
- devops
- devsecops
- distributed-systems
- docker
- idempotency
- legacy
- maintainability
- production
- redis
- reliability
- scalability
- secure-design
- security
- shift-left
- testing
- threat-modeling
Posts
Before Adding PHP-FPM Workers, Find Out What’s Actually Slow
Learn how to diagnose and fix PHP-FPM performance bottlenecks under real production traffic instead of blindly scaling replicas. This guide covers checking FPM status, enabling slow logs, inspecting container resources, and sizing workers based on evidence.
#php #docker #containers #performance #production #devops
9 min
When Symfony Messenger Is the Wrong Tool
Symfony Messenger is powerful, but not every slow operation needs a queue. I explore six situations where asynchronous processing creates more problems than it solves, covering transactions, retries, idempotency, and simpler alternatives with practical PHP examples.
#php #symfony #software-architecture #best-practices #backend-development
15 min
Why Moving Code into a Service Doesn’t Improve the Design by Itself
Moving code into a service can shrink a controller without fixing the design. This article looks at responsibilities, dependencies, transaction boundaries, side effects, and tests that show whether a refactor created a meaningful boundary.
#php #symfony #software-architecture #refactoring #doctrine #clean-code
6 min
Why Adding Redis Doesn’t Automatically Fix Performance
Redis can improve PHP application performance, but only when it addresses a measured bottleneck. This article looks at inefficient read paths, cache hit costs, stampedes, fallback behavior, and how to decide whether caching will actually improve the system.
#php #redis #caching #performance #symfony #doctrine #scalability
7 min
The Hidden Cost of `flush()` in a Symfony Application
Doctrine’s flush() can affect much more than the entity a repository appears to save. This article looks at Unit of Work behavior, transaction boundaries, lifecycle listeners, batch processing, failed flushes, and how to make persistence boundaries easier to understand and operate safely.
#php #symfony #doctrine #database #software-architecture
6 min
The First Refactor I Make in a Legacy PHP Application
A practical approach to the first refactor in a legacy PHP application: isolate important behavior, preserve existing semantics, add focused tests, and create a safer starting point for future changes.
#php #legacy #refactoring #software-architecture #testing #maintainability
5 min
The Most Dangerous Button in an Admin Panel Is “Retry”
A practical look at why retrying a failed operation can be dangerous. This article explores uncertain outcomes, stable operation identities, concurrent retries, multi-step workflows, safe recovery actions, and how to test the failure cases that matter.
#php #software-architecture #reliability #idempotency #distributed-systems
6 min