runtime / swoole-nyholm
Swoole runtime with nyholm/psr7
Fund package maintenance!
nyholm
0.2.0
2023-12-12 11:39 UTC
Requires
- php: >=8.1
- nyholm/psr7: ^1.7
- psr/http-server-handler: ^1.0
- symfony/runtime: ^5.4.26 || ^6.3.2 || ^7.0
Requires (Dev)
- phpunit/phpunit: ^9.5
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.
// public/index.php use App\Kernel; $_SERVER['APP_RUNTIME_OPTIONS'] = [ 'host' => '0.0.0.0', 'port' => 9501, 'mode' => SWOOLE_BASE, 'settings' => [ 'worker_num' => swoole_cpu_num() * 2, 'enable_static_handler' => true, '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']); };