Optimizing PHP Performance: Why PHP-FPM Outperformed FrankenPHP and Caddy for 1K Real-Time Users

Published ·

When it comes to building scalable web applications, backend performance plays a critical role in user experience. I recently ran a series of benchmarks to determine the best PHP runtime environment for handling 1,000 concurrent users in real-time.

Ready to run your business in one place?

WebifyGO brings your contacts, pipeline, invoicing, campaigns, and support into one CRM. Start free — no credit card required.

Start Your Free Trial →

We tested three different setups:

  • FrankenPHP – a modern, experimental PHP runtime built on top of Caddy.
  • Caddy + PHP-FPM – combining the performance of Caddy as a web server with PHP-FPM.
  • Apache + PHP-FPM – the more traditional stack using PHP-FPM with Apache.


Test Setup

  • Server Specs: 16 CPU cores, 40GB RAM.
  • Database: MySQL 8 with optimized innodb_buffer_pool_size and caching parameters.
  • Load Testing Tool: ApacheBench (ab) and wrk for simulating 1k concurrent users.
  • Codebase: A real-world PHP project with sessions and database queries.


FrankenPHP Results

FrankenPHP is lightweight and very fast in single-core tests. However, under high concurrency (1k users), CPU usage spiked up to 1500%, which made resource usage unpredictable. While it handled requests quickly, the stability wasn’t consistent in production-like conditions.

Pros:

  • Easy to run via Caddy.
  • Built-in support for modern features.

Cons:

  • High CPU overhead under heavy concurrency.
  • Experimental – not yet production-proven for enterprise workloads.


Caddy + PHP-FPM Results

Caddy provided simplicity in configuration, automatic HTTPS, and good load distribution. Combined with PHP-FPM, it was stable – but still slightly less efficient compared to Apache with PHP-FPM in our tests.

Pros:

  • Modern and easy configuration.
  • Good TLS handling out of the box.

Cons:

  • Higher latency compared to PHP-FPM on Apache.
  • PHP worker handling not as efficient.


Apache + PHP-FPM Results

PHP-FPM with Apache showed the best balance of CPU usage, memory consumption, and request throughput. Under 1k concurrent users, CPU usage capped around 500%, which is significantly lower than FrankenPHP’s 1500%.

Pros:

  • Stable and predictable under heavy load.
  • Mature ecosystem, widely documented.
  • Tunable via pm.max_children, opcache, and Redis sessions.

Cons:

  • Slightly higher memory footprint than Caddy.


Final Verdict: PHP-FPM Wins

After extensive testing, PHP-FPM proved to be the most reliable and performant solution for handling 1,000 real-time users. While FrankenPHP and Caddy are exciting technologies with modern benefits, PHP-FPM remains the production-grade choice for high-concurrency environments.

If you’re aiming for real-time scalability with thousands of users, optimizing PHP-FPM + database tuning + Redis session handling is still the safest and most efficient path forward.


I recommend starting with PHP-FPM for mission-critical applications, while keeping an eye on FrankenPHP and Caddy as they evolve.

Frequently Asked Questions

WebifyGO is an all-in-one CRM that brings your contacts, sales pipeline, invoicing, email & SMS campaigns, help desk, and analytics into a single platform, so your whole team works from one place.

A CRM (customer relationship management) system keeps every contact, deal, and interaction in one place, so your team can sell, support, and follow up without losing track of anything.

Yes. You can start a 14-day free trial with full access to the platform. No credit card is required to get started.

Yes. WebifyGO is built to start simple and scale — solo founders can begin free, and the platform grows with your team without ever needing to migrate.

No. You only add payment details if you decide to upgrade to a paid plan after your trial ends.

Absolutely. Unlike spreadsheets, a CRM tracks full history, automates follow-ups, and keeps everyone working from the same live data.

Every account runs in its own isolated instance with SSL encryption and automatic backups. Your data is never shared with other customers.

They remove repetitive work — logging activity, sending follow-ups, and even making calls — so your team spends more time with customers and less on admin.

Yes. You can import contacts, leads, and deals via CSV with flexible field mapping, or start fresh with a clean pipeline.