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.
Join our discord server: Link
Official Website | Documentation | Forum | Release schedule
- Production-ready
- PCI DSS compliant (HTTP plugin)
- PSR-7 HTTP server (file uploads, error handling, static files, hot reload, middleware, event listeners)
- HTTPS and HTTP/2 support (including HTTP/2 Push, H2C)
- A Fully customizable http(s)/2 server
- FastCGI support (HTTP plugin)
- Flexible environment configuration
- No external PHP dependencies (64bit version required)
- Integrated metrics (Prometheus)
- Workflow engine by Temporal.io
- Works over TCP, UNIX sockets and process pipes
- Automatic worker replacement, graceful and safe PHP process destruction
- Worker create/allocate/destroy timeouts
- Max requests per worker limitation
- Worker lifecycle management (controller)
- max_memory (graceful stop)
- ttl (graceful stop)
- idle_ttl (graceful stop)
- exec_tll (brute, max_execution_time)
- Protocol, worker and job level error management (including PHP errors)
- Development Mode
- Integrations with Symfony, Laravel, Slim, CakePHP, Zend Expressive
- Application server for Spiral
- Works on Windows 10/11 and WSL2
The easiest way to get the latest RoadRunner version is to use one of the pre-built release binaries, which are available for OSX, Linux, FreeBSD, and Windows. Instructions for using these binaries are on the GitHub releases page.
To get the roadrunner binary file you can use our docker image: ghcr.io/roadrunner-server/roadrunner:2023.X.X (more information about
image and tags can be found here).
FROM ghcr.io/roadrunner-server/roadrunner:2023.X.X AS roadrunner
FROM php:8.2-cli
COPY --from=roadrunner /usr/bin/rr /usr/local/bin/rr
# USE THE RRConfiguration located in the .rr.yaml file (full sample):
You can also install RoadRunner automatically using command shipped with the composer package, run:
composer require spiral/roadrunner-http nyholm/psr7
./vendor/bin/rr get-binaryServer binary will be available at the root of your project.
Note
PHP's extensions
php-curlandphp-zipare required to download RoadRunner automatically. PHP's extensionsphp-socketsneed to be installed to run roadrunner. Check withphp --modulesyour installed extensions.
wget https://github.com/roadrunner-server/roadrunner/releases/download/v2023.X.X/roadrunner-2023.X.X-linux-amd64.deb
sudo dpkg -i roadrunner-2023.X.X-linux-amd64.debcurl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/roadrunner-server/roadrunner/master/download-latest.sh | shConfiguration can be located in .rr.yaml file (full sample):
version: '3'
rpc:
listen: tcp://127.0.0.1:6001
server:
command: "php worker.php"
http:
address: "0.0.0.0:8080"
logs:
level: errorRead more in Documentation.
<?php
use Spiral\RoadRunner;
use Nyholm\Psr7;
include "vendor/autoload.php";
$worker = RoadRunner\Worker::create();
$psrFactory = new Psr7\Factory\Psr17Factory();
$worker = new RoadRunner\Http\PSR7Worker($worker, $psrFactory, $psrFactory, $psrFactory);
while ($req = $worker->waitRequest()) {
try {
$rsp = new Psr7\Response();
$rsp->getBody()->write('Hello world!');
$worker->respond($rsp);
} catch (\Throwable $e) {
$worker->getWorker()->error((string)$e);
}
}Available Plugins: link
To run application server:
$ ./rr serve -c .rr.yaml
The MIT License (MIT). Please see LICENSE for more information. Maintained
by Spiral Scout.
Thanks to all the people who already contributed!