RoadRunner is an open source (MIT licensed) high-performance PHP application server, load balancer and process manager. It supports running as a service with the ability to extend its functionality on a per-project basis.
RoadRunner includes PSR-7/PSR-17 compatible HTTP and HTTP/2 server and can be used to replace classic Nginx+FPM setup with much greater performance and flexibility.
Official Website | Documentation
- production ready
 - PSR-7 HTTP server (file uploads, error handling, static files, hot reload, middlewares, event listeners)
 - HTTPS and HTTP/2 support (including HTTP/2 Push)
 - fully customizable server
 - flexible environment configuration
 - no external PHP dependencies, drop-in (based on Goridge)
 - load balancer, process manager and task pipeline
 - frontend agnostic (Queue, PSR-7, GRPC, etc)
 - integrated metrics (Prometheus)
 - works over TCP, unix sockets and standard pipes
 - automatic worker replacement and safe PHP process destruction
 - worker create/allocate/destroy timeouts
 - max jobs per worker
 - worker lifecycle management (controller)
- maxMemory (graceful stop)
 - TTL (graceful stop)
 - idleTTL (graceful stop)
 - execTTL (brute, max_execution_time)
 
 - payload context and body
 - protocol, worker and job level error management (including PHP errors)
 - very fast (~250k rpc calls per second on Ryzen 1700X using 16 threads)
 - integrations with Symfony, Laravel, Slim, CakePHP, Zend Expressive, Spiral
 - works on Windows
 
To install:
$ composer require spiral/roadrunner
$ ./vendor/bin/rr get-binary
<?php
// worker.php
ini_set('display_errors', 'stderr');
include "vendor/autoload.php";
$relay = new Spiral\Goridge\StreamRelay(STDIN, STDOUT);
$psr7 = new Spiral\RoadRunner\PSR7Client(new Spiral\RoadRunner\Worker($relay));
while ($req = $psr7->acceptRequest()) {
    try {
        $resp = new \Zend\Diactoros\Response();
        $resp->getBody()->write("hello world");
        $psr7->respond($resp);
    } catch (\Throwable $e) {
        $psr7->getWorker()->error((string)$e);
    }
}Configuration can be located in .rr.yaml file (full sample):
http:
  address:         0.0.0.0:8080
  workers.command: "php worker.php"Read more in Wiki.
To run application server:
$ ./rr serve -v -d
The MIT License (MIT). Please see LICENSE for more information. Maintained by Spiral Scout.

