Skip to content
 

Analysis

This directory contains research and analysis of the competitive landscape and key technologies relevant to building ePHPm — an all-in-one PHP application server.

No single existing product covers the full ePHPm feature set. The closest competitors are FrankenPHP, RoadRunner, and Swoole/OpenSwoole.


Documents

  • FrankenPHP — Caddy integration, CGO/SAPI embedding, worker suspend/resume mechanism
  • RoadRunner — Goridge IPC, plugin architecture, PSR-7 requirements
  • Swoole — coroutine runtime, connection pooling, invasiveness
  • Caddy — why it was considered and rejected, lessons learned, Rust equivalents
  • CertMagic — TLS & ACME — CertMagic (Go) vs Rust stack (rustls, rustls-acme, instant-acme)
  • Laravel Octane — adapter layer, not a server, backend comparison
  • Popularity — GitHub stars, Docker pulls, Packagist downloads, business adoption, estimated MAU

Feature Gap Matrix

FeatureFrankenPHPRoadRunnerSwooleePHPm Goal
HTTP serving (no nginx)YesYesYesYes
PHP execution (no php-fpm)YesYesYesYes
Auto TLS (Let’s Encrypt)Yes (Caddy)PartialNoYes
Prometheus metricsYesYes (best)YesYes
DB connection poolingNoNoYesYes
In-memory KV / sessionsNoYes (single node)Yes (single process)Yes + clustering
Multi-node clusteringNoNoNoYes
Debug / profiling UINoNoNoYes
Query digest / analysisNoNoNoYes
Slow query + EXPLAINNoNoNoYes
Request debug modeNoNoNoYes
Built-in OTLP collectorNoNoNoYes
Full-stack auto-instrumentationNoNoNoYes
Single binary, all platformsYesYesNo (Linux)Yes

PHP-Side Invasiveness Comparison

SuperglobalsSessionsPSR-7 RequiredPackages NeededExisting App Compat
FrankenPHP classicWorkWorkNoNoneDrop-in
FrankenPHP workerWorkWith careNoNoneHigh
RoadRunnerBrokenBrokenYes2-3 packagesLow-Medium
SwooleBrokenBrokenNo (own API)PECL extLow

Key Market Gaps (ePHPm Opportunities)

  1. Database connection pooling in Go-based servers — Neither FrankenPHP nor RoadRunner has this. RoadRunner has a years-old open feature request that was never built. Only Swoole has it, but requires a C extension and is Linux-only.

  2. Multi-node clustered KV store — All three rely on external Redis or Kubernetes. None has built-in gossip protocol, peer discovery, or distributed cache.

  3. On-demand production profiling — No server supports token-gated profiling/cachegrind via request headers with results surfaced in a web UI.

  4. SQL-layer intelligence — No server intercepts and analyzes SQL traffic (query digests, slow query identification, auto-EXPLAIN). This requires control of the DB proxy layer.

  5. Request-level debug capture — No server captures per-request data (queries, cache hits, session data, timing) at the infrastructure level. Framework-level tools (Laravel Debugbar, Symfony Profiler) exist but only work within their respective frameworks.