Skip to content
EdgeServers
Blog

Laravel Octane in production — RoadRunner vs Swoole vs FrankenPHP

May 13, 2026 · 1 min read · by Sudhanshu K.

Laravel Octane is the framework's answer to the "boot Laravel on every request" cost — instead of bootstrapping the kernel for each HTTP request, Octane boots once and serves many. The throughput gain on real workloads is 3-10x, depending on how heavy the boot path is.

The three runtimes — RoadRunner, Swoole, and FrankenPHP — make different trade-offs. We've shipped customers on all three. Here's the comparison that actually matches what we see in production.

The three at a glance

                  RoadRunner    Swoole         FrankenPHP
boot time          fast          fastest        fast
HTTP/2 + HTTP/3    via Nginx     via Nginx      built-in
deployment         go binary     PECL extension single binary
state leakage      low risk      higher risk    low risk
ecosystem          mature        mature         newer

Default to FrankenPHP for new greenfield work — single binary deployment, native HTTP/3, no PHP extension to compile. Default to RoadRunner for existing customers with an established CI pipeline. Swoole is the right answer for Octane-heavy customers who need its coroutine model and have the operations capacity to manage the PECL extension lifecycle.

The full write-up covers:

  • State-leakage patterns — the singleton bug that's specific to long-running PHP
  • Memory management — Octane workers should be recycled, here's how
  • The Sanctum/Auth Auth::user() pitfalls under Octane (request-scoped, not global)
  • Octane on Kubernetes — graceful shutdown, readiness probes, rolling deploys
  • Performance numbers on a real Laravel app (req/s, p99 latency, memory)
  • When not to use Octane (legacy apps with global state, dev simplicity)

We ship Octane on most managed Laravel customers who hit the boot-cost wall.

Full article available

Read the full article