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