Maxim Mironjuk
-
February 08, 2025
PHP-FPM processes every request in its own synchronous worker process, which only becomes available for the next request once the current one has fully completed. Blocking Redis commands such as BLPOP, BRPOP, or XREAD BLOCK actively wait for an event before returning, which fundamentally clashes with this model: a single such call inside a Magento controller or plugin can tie up an entire PHP-FPM worker for seconds or even minutes, while other visitors wait for a free worker. This article shows why these commands are problematic in web processes, where they tend to end up by accident in practice, and which alternatives for event-driven flows actually work within a synchronous PHP architecture.