Skip to content

High-performance PHP application server, load-balancer and process manager written in Golang

License

Notifications You must be signed in to change notification settings

symlex/roadrunner

This branch is 2957 commits behind roadrunner-server/roadrunner:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9aee5be · Jul 1, 2019
Jun 27, 2019
Jun 27, 2019
Jan 5, 2019
Jun 29, 2019
Jul 1, 2019
Jun 24, 2019
Jun 24, 2019
Jan 11, 2019
Jun 29, 2019
Jun 27, 2019
Jul 1, 2019
Oct 9, 2018
Jun 3, 2018
Jun 26, 2019
Jun 29, 2019
Jul 1, 2019
Jun 27, 2019
Feb 14, 2019
Feb 14, 2019
May 4, 2019
May 4, 2019
May 2, 2019
Jul 9, 2018
May 29, 2018
Jun 7, 2018
Jun 6, 2018
Jun 25, 2019
Jun 11, 2018
Jun 5, 2018
Sep 23, 2018
May 4, 2019
May 2, 2019
May 2, 2019
May 4, 2019
Jan 5, 2019
Oct 1, 2018
May 3, 2019
Jun 12, 2018
Oct 1, 2018
May 3, 2019
Jun 11, 2018
May 4, 2019
May 3, 2019
Jun 29, 2019
Oct 1, 2018

Repository files navigation

RoadRunner

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

Features:

  • 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

Installation:

To install:

$ composer require spiral/roadrunner
$ ./vendor/bin/rr get-binary

Example:

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

Run:

To run application server:

$ ./rr serve -v -d

License:

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

About

High-performance PHP application server, load-balancer and process manager written in Golang

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 84.8%
  • PHP 14.8%
  • Other 0.4%