explaingit

roadrunner-server/roadrunner

8,454GoAudience · ops devopsComplexity · 3/5LicenseSetup · moderate

TLDR

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.

Mindmap

mindmap
  root((roadrunner))
    Core benefit
      Persistent PHP workers
      No cold start per request
      Replaces Nginx and FPM
    Plugin system
      Job queues
      Cache layers
      gRPC support
      WebSockets
      Metrics
    Config
      Single YAML file
    Install options
      Binary download
      Docker
      Homebrew
      Composer helper
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Replace Nginx and PHP-FPM with RoadRunner to serve PHP requests faster by keeping workers warm between requests.

USE CASE 2

Add background job queues backed by RabbitMQ, Kafka, or Amazon SQS to a PHP application without extra services.

USE CASE 3

Expose a PHP app over gRPC for fast communication between internal services.

Tech stack

GoPHPYAML

Getting it running

Difficulty · moderate Time to first run · 30min

Requires writing a PHP worker script and a .rr.yaml config file, pre-built binaries available for all major platforms.

MIT license, use freely for any purpose including commercial projects, as long as you keep the copyright notice.

In plain English

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.

Copy-paste prompts

Prompt 1
I want to replace my PHP-FPM setup with RoadRunner. Write a minimal .rr.yaml config and a PHP worker script that handles HTTP requests.
Prompt 2
How do I configure RoadRunner to consume jobs from a RabbitMQ queue in my PHP application?
Prompt 3
I want to add WebSocket support to my PHP app using RoadRunner. What plugin do I enable and what does the PHP worker look like?
Prompt 4
Help me set up RoadRunner with Docker so I can run my Laravel app without Nginx or FPM.
Prompt 5
How do I collect metrics from RoadRunner and send them to Prometheus for monitoring?
Open on GitHub → Explain another repo

← roadrunner-server on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.