Giter Site home page Giter Site logo

wanghouting123 / roadrunner Goto Github PK

View Code? Open in Web Editor NEW

This project forked from roadrunner-server/roadrunner

0.0 0.0 0.0 920 KB

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

Home Page: https://roadrunner.dev/

License: MIT License

Makefile 0.15% PHP 14.83% Shell 0.30% Go 84.73%

roadrunner's Introduction

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 (64bit version required), 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.

roadrunner's People

Contributors

1ma avatar alex-bond avatar chaz6 avatar dkuhnert avatar dmitry-a-l avatar dunglas avatar mrsuh avatar mylxsw avatar ovr avatar ruudk avatar shmurakami avatar wolfy-j avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.