Parallel Task Execution in PHP... with Go

PHP is a blocking language. When you loop over a batch of images and resize each one sequentially, you wait for every conversion to finish before starting the next. For small batches that is acceptable. For anything larger, it becomes a bottleneck. The natural instinct is to reach for a parallelism solution inside PHP. But I have come to prefer a different approach: accept that PHP is blocking, and delegate the responsibility of parallelism to a language that does it beautifully. ...

March 7, 2026 · 6 min · Maxime Gosselin

In Search of the Missing PDO Interface

PHP’s PDO extension has been the standard database abstraction layer since PHP 5.1. It does its job well: it provides a unified API over multiple database drivers and handles the low-level details of connecting, querying, and fetching results. Yet, after nearly two decades, PDO is still missing something fundamental: an interface. This might seem like a minor inconvenience, but the consequences ripple across the PHP ecosystem in ways that are worth examining. This post explores the gap, the workarounds the community has invented to fill it, and what a minimal standard interface could look like. ...

March 1, 2026 · 9 min · Maxime Gosselin

Using the Middleware Pattern to Extend PHP Libraries

If you have been writing PHP professionally for the past few years, you have almost certainly encountered PSR-15. It formalized the concept of middleware for HTTP request handling, and it changed the way we think about extensibility in PHP applications. But here is the thing: the idea behind PSR-15 is too good to leave confined to HTTP. This article is for PHP developers who maintain libraries. If you have ever exposed an extension point in your library using the Decorator pattern, I want to show you a better default. ...

February 27, 2026 · 7 min · Maxime Gosselin

Backslash: Event Sourcing in PHP, Built for the Real World

Event sourcing is often overlooked A lot of people hesitate to adopt event sourcing. The literature is full of distributed systems, eventual consistency, sophisticated event stores, and architectural diagrams that look like they belong at Netflix. It’s easy to walk away thinking this is not for me. Most of that complexity is self-inflicted. None of it is inherent to event sourcing. It’s a set of choices, and you can make different ones. ...

February 20, 2026 · 4 min · Maxime Gosselin