runtime / swoole-nyholm
Swoole runtime with nyholm/psr7
Fund package maintenance!
nyholm
0.1.1
2021-09-10 20:33 UTC
Requires
- nyholm/psr7: ^1.4
- psr/http-server-handler: ^1.0
- symfony/runtime: ^5.3 || ^6.0
Requires (Dev)
- symfony/phpunit-bridge: ^5.3
README
A runtime for Swoole.
If you are new to the Symfony Runtime component, read more in the main readme.
Installation
composer require runtime/swoole-nyholm
Usage
Define the environment variable APP_RUNTIME
for your application.
APP_RUNTIME=Runtime\SwooleNyholm\Runtime
Pure PHP
// public/index.php use Swoole\Http\Request; use Swoole\Http\Response; require_once dirname(__DIR__).'/vendor/autoload_runtime.php'; return function () { return function (Request $request, Response $response) { $response->header("Content-Type", "text/plain"); $response->end("Hello World\n"); }; };
PSR
// public/index.php use Nyholm\Psr7\Response; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; require_once dirname(__DIR__).'/vendor/autoload_runtime.php'; class App implements RequestHandlerInterface { public function handle(ServerRequestInterface $request): ResponseInterface { $name = $request->getQueryParams()['name'] ?? 'World'; return new Response(200, ['Server' => 'swoole-runtime'], "Hello, $name!"); } } return function(): RequestHandlerInterface { return new App(); };
Using Options
You can define some configurations using Symfony's Runtime APP_RUNTIME_OPTIONS
API.
Option | Description | Default |
---|---|---|
host |
The host where the server should binds to (precedes SWOOLE_HOST environment variable) |
127.0.0.1 |
port |
The port where the server should be listing (precedes SWOOLE_PORT environment variable) |
8000 |
mode |
Swoole's server mode (precedes SWOOLE_MODE environment variable) |
SWOOLE_PROCESS |
settings |
All Swoole's server settings (swoole.co.uk/docs/modules/swoole-server/configuration) | [] |
// public/index.php use App\Kernel; $_SERVER['APP_RUNTIME_OPTIONS'] = [ 'host' => '0.0.0.0', 'port' => 9501, 'mode' => SWOOLE_BASE, 'settings' => [ \Swoole\Constant::OPTION_WORKER_NUM => swoole_cpu_num() * 2, \Swoole\Constant::OPTION_ENABLE_STATIC_HANDLER => true, \Swoole\Constant::OPTION_DOCUMENT_ROOT => dirname(__DIR__).'/public' ], ]; require_once dirname(__DIR__).'/vendor/autoload_runtime.php'; return function (array $context) { return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']); };