• 2 min read
Pure PHP server claims 10x more concurrency than php-fpm
Qbix Server says its fork-after-preload design can handle 1,600 concurrent PHP requests on 8GB RAM, versus about 160 with php-fpm.

Image: Hacker News
Qbix Server is pitching a simple but ambitious idea: run a full web server in pure PHP, without nginx, Apache, or php-fpm. According to its README, the project serves static files, PHP scripts, WebSocket connections, and a live dashboard from a single process, and can support far more concurrent PHP requests on the same hardware.
The core claim is about memory use. The project says a typical php-fpm worker consumes 30–60MB because each worker loads the full framework stack independently. On an 8GB server, that works out to roughly 160 workers at 50MB each. Qbix Server instead preloads classes and configuration, then forks workers so they share that memory via copy-on-write. The README says each worker adds only about 5MB of per-request memory, allowing up to 1,600 concurrent PHP requests on the same 8GB machine.
It also argues that this reduces request latency by removing framework bootstrap work from every request. The project estimates a 10–50ms bootstrap cost for stacks like Laravel, Symfony, or Qbix under nginx + php-fpm, versus 0ms once workers are forked after preload. In its example, a request that takes 35ms under the traditional stack drops to 5ms under Qbix Server.
There is a tradeoff. On raw static file serving, the project’s own benchmarks show nginx still ahead. In a single-core container running PHP 8.3 on Ubuntu 24, using a 13KB static file and warm caches, Qbix Server reached:

Recommended reading
VK Dating vanishes from App Store, but iPhone access remains
- 6,376 req/s versus 10,154 req/s for nginx at c=1
- 7,253 req/s versus 12,919 req/s at c=50
- 20,369 req/s versus 30,158 req/s on keep-alive at c=50
That puts Qbix Server at roughly 55–73% of nginx’s static throughput. The README says there were zero failed requests across 50,000+ requests at concurrency 50, and no crashes.
The project positions itself against FrankenPHP and Swoole as well. Its argument is that those persistent-worker approaches can leak state between requests, while Qbix Server keeps PHP’s shared-nothing model by forking from a preloaded parent. It also emphasizes deployment simplicity: run php qbixserver.php --port=8080, or use a 196KB PHAR.
Feature-wise, the server includes HTTP/2 via amphp, gzip/brotli compression, WebSocket support, health checks, a password-protected control panel, rate limiting, and support for headers such as X-Accel-Redirect and X-Cache-Tree for access-controlled file delivery and component-level cache invalidation.
The README’s broader point is straightforward: C will still beat PHP on raw I/O, but if your bottleneck is repeated PHP bootstrap and duplicated worker memory, preloading and forking may matter more than static benchmark charts.
Computing Editor
Tomas lives in the terminal. He covers chips, laptops, and operating systems with a focus on performance and efficiency. He reads kernel changelogs the way other people read fiction, and he's always on the hunt for the perfect mechanical keyboard switch. If it processes data, Tomas has an opinion on it.
via Hacker News


