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
Repository:
--------
This repository contains the codebase PSR-7 PHP workers.
Check [spiral/roadrunner](https://github.com/spiral/roadrunner) to get application server.
Installation:
--------
To install application server and HTTP codebase:
```bash
$ composer require spiral/roadrunner-http nyholm/psr7
```
You can use the convenient installer to download the latest available compatible version of RoadRunner assembly:
```bash
$ composer require spiral/roadrunner-cli --dev
```
To download latest version of application server:
```bash
$ vendor/bin/rr get
```
> You can use any [PSR-17 compatible implementation](https://github.com/search?q=psr-17).
Example:
-------
To init abstract RoadRunner worker:
```php
waitRequest();
} catch (\Throwable $e) {
// Although the PSR-17 specification clearly states that there can be
// no exceptions when creating a request, however, some implementations
// may violate this rule. Therefore, it is recommended to process the
// incoming request for errors.
//
// Send "Bad Request" response.
$psr7->respond(new Response(400));
continue;
}
try {
// Here is where the call to your application code will be located.
// For example:
//
// $response = $app->send($request);
//
// Reply by the 200 OK response
$psr7->respond(new Response(200, [], 'Hello RoadRunner!'));
} catch (\Throwable $e) {
// In case of any exceptions in the application code, you should handle
// them and inform the client about the presence of a server error.
//
// Reply by the 500 Internal Server Error response
$psr7->respond(new Response(500, [], 'Something Went Wrong!'));
// Additionally, we can inform the RoadRunner that the processing
// of the request failed.
$worker->error((string)$e);
}
}
```
Testing:
--------
This codebase is automatically tested via host repository - [spiral/roadrunner](https://github.com/spiral/roadrunner).
License:
--------
The MIT License (MIT). Please see [`LICENSE`](./LICENSE) for more information. Maintained
by [Spiral Scout](https://spiralscout.com).