spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

Fund package maintenance!
roadrunner-server

Installs: 2 336 322

Dependents: 81

Suggesters: 1

Security: 0

Stars: 7 185

Watchers: 152

Forks: 391

Open Issues: 42

Language:Go

Type:metapackage

v2023.1.4 2023-05-25 10:57 UTC

This package is auto-updated.

Last update: 2023-06-06 07:03:33 UTC


README

50286124-6f7f3780-046f-11e9-9f45-e8fedd4f786d.png

68747470733a2f2f706f7365722e707567782e6f72672f73706972616c2f726f616472756e6e65722f76657273696f6e 68747470733a2f2f676f646f632e6f72672f6769746875622e636f6d2f726f616472756e6e65722d7365727665722f726f616472756e6e65722f76323032333f7374617475732e737667 68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f73706972616c7068703f7374796c653d736f6369616c 68747470733a2f2f636f6465636f762e696f2f67682f726f616472756e6e65722d7365727665722f726f616472756e6e65722f6272616e63682f6d61737465722f67726170682f62616467652e737667 68747470733a2f2f636f6465636f762e696f2f67682f726f616472756e6e65722d7365727665722f72722d6532652d74657374732f6272616e63682f6d61737465722f67726170682f62616467652e737667 68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f726f616472756e6e65722d7365727665722f726f616472756e6e65722f7632 68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646973636f72642d636861742d6d6167656e74612e737667 68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64642f73706972616c2f726f616472756e6e65723f7374796c653d666c61742d737175617265 All releases

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

Features:

  • 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

Installation

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.

Docker:

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 RR

Configuration located in the .rr.yaml file (full sample):

Installation via Composer

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-binary

Server binary will be available at the root of your project.

Note

PHP's extensions php-curl and php-zip are required to download RoadRunner automatically. PHP's extensions php-sockets need to be installed to run roadrunner. Check with php --modules your installed extensions.

Installation option for the Debian-derivatives (Ubuntu, Mint, MX, etc)

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.deb

Dowload the latest release via curl:

curl --proto '=https' --tlsv1.2 -sSf  https://raw.githubusercontent.com/roadrunner-server/roadrunner/master/download-latest.sh | sh

Configuration 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: error

Read more in Documentation.

Example Worker:

<?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

Run:

To run application server:

$ ./rr serve -c .rr.yaml

License:

The MIT License (MIT). Please see LICENSE for more information. Maintained by Spiral Scout.

Contributors

Thanks to all the people who already contributed!

68747470733a2f2f636f6e7472696275746f72732d696d672e7765622e6170702f696d6167653f7265706f3d726f616472756e6e65722d7365727665722f726f616472756e6e6572