roadrunner
🤯 High-performance PHP application server, process manager written in Go and powered with plugins
High-performance PHP application server written in Go that keeps PHP workers alive between requests, replacing Nginx and PHP-FPM with a single faster process.
RoadRunner is an open-source application server for PHP, written in Go. Normally, PHP applications rely on a combination of Nginx (a web server) and FPM (a process manager that runs PHP code), and that setup has real overhead: each incoming request wakes up a fresh PHP process from scratch, which is slow. RoadRunner replaces that combination with a single, long-running process that keeps PHP workers alive between requests, so the application is already warm and ready when the next visitor arrives.
Beyond serving web requests, RoadRunner ships with a broad plugin system. You can add background job queues that connect to services like RabbitMQ, Kafka, or Amazon SQS. You can set up caching layers backed by Redis or Memcached. You can expose your application over gRPC, a protocol built for fast service-to-service communication. There is also built-in support for WebSockets, metrics collection, distributed locking (useful when multiple servers need to coordinate access to a shared resource), and workflow orchestration via Temporal.
Configuration lives in a single YAML file (.rr.yaml). You point it to a PHP worker script, tell it which port to listen on, and start the server with one command. The workers stay running and wait for incoming requests rather than spawning and dying with each one. The README includes a short PHP example showing the basic request-and-response loop a worker follows.
Installing RoadRunner is straightforward: pre-built binaries exist for Linux, macOS, Windows, and FreeBSD. You can also grab it through Docker, Homebrew (macOS), Chocolatey (Windows), a Debian package, or via a Composer helper script if you are already in a PHP project.
The project is MIT licensed and maintained by Spiral Scout. The README is sparse on production tuning details but points to a documentation site and a Discord community for further guidance.
Where it fits
- Replace Nginx and PHP-FPM with RoadRunner to serve PHP requests faster by keeping workers warm between requests.
- Add background job queues backed by RabbitMQ, Kafka, or Amazon SQS to a PHP application without extra services.
- Expose a PHP app over gRPC for fast communication between internal services.