Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/roadrunner-php/http
🔌 PSR7 Worker Client for RoadRunner application server.
https://github.com/roadrunner-php/http
hacktoberfest http php psr-17 psr-7 roadrunner
Last synced: 2 days ago
JSON representation
🔌 PSR7 Worker Client for RoadRunner application server.
- Host: GitHub
- URL: https://github.com/roadrunner-php/http
- Owner: roadrunner-php
- License: mit
- Created: 2020-10-26T11:11:30.000Z (over 4 years ago)
- Default Branch: 3.x
- Last Pushed: 2024-04-26T11:21:38.000Z (9 months ago)
- Last Synced: 2024-12-29T11:49:58.319Z (about 1 month ago)
- Topics: hacktoberfest, http, php, psr-17, psr-7, roadrunner
- Language: PHP
- Homepage:
- Size: 91.8 KB
- Stars: 23
- Watchers: 9
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
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.## Requirements:
Ensure that your server is configured with the following PHP versions and extensions:
- PHP >=8.1
- ext-protobuf: This extension is optional but **highly recommended for installation**.
Without it, performance may be up to 50% lower.
- RoadRunner ^2023.3## 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://packagist.org/providers/psr/http-factory-implementation).
## 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);
}
}
```### Stream response
To send a response in a stream, set the `$chunkSize` property in `PSR7Worker`:
```php
$psr7 = new PSR7Worker($worker, $factory, $factory, $factory);
$psr7->chunkSize = 512 * 1024; // 512KB
```Now PSR7Worker will cut the response into chunks of 512KB and send them to the stream.
### Early hints
To send multiple responses you may use the `\Spiral\RoadRunner\Http\HttpWorker::respond()` method with
the `endOfStream` parameter set to `false`. This will send the response to the client and allow you to send
additional responses.```php
/** @var \Spiral\RoadRunner\Http\PSR7Worker $psr7 */
$httpWorker = $psr7->getHttpWorker()
->respond(103, header: ['Link' => ['; rel=preload; as=style']], endOfStream: false);// End of stream will be sent automatically after PSR7Worker::respond() call
$psr7->respond(new Response(200, [], 'Hello RoadRunner!'));
```[![try Spiral Framework](https://user-images.githubusercontent.com/773481/220979012-e67b74b5-3db1-41b7-bdb0-8a042587dedc.jpg)](https://spiral.dev/)
## Testing:
This codebase is automatically tested via host repository - [spiral/roadrunner](https://github.com/roadrunner-server/roadrunner).
## License:
The MIT License (MIT). Please see [`LICENSE`](./LICENSE) for more information. Maintained
by [Spiral Scout](https://spiralscout.com).