A request handler adapter for workerman, using PSR-7, PSR-15 and PSR-17.
- php: ^8.3
- psr/http-factory: ^1.1
- psr/http-message: ^1.1|^2.0
- psr/http-server-handler: ^1.0.2
- psr/log: ^2.0|^3.0.2
- workerman/workerman: ^5.1.6
Through Composer as chubbyphp/chubbyphp-workerman-request-handler.
composer require chubbyphp/chubbyphp-workerman-request-handler "^2.3"<?php declare(strict_types=1); namespace App; use Chubbyphp\WorkermanRequestHandler\OnMessage; use Chubbyphp\WorkermanRequestHandler\PsrRequestFactory; use Chubbyphp\WorkermanRequestHandler\WorkermanResponseEmitter; use Psr\Http\Server\RequestHandlerInterface; use Some\Psr17\Factory\ServerRequestFactory; use Some\Psr17\Factory\StreamFactory; use Some\Psr17\Factory\UploadedFileFactory; use Workerman\Worker; $loader = require __DIR__.'/vendor/autoload.php'; /** @var RequestHandlerInterface $app*/ $app = ...; $http = new Worker('http://0.0.0.0:8080'); $http->count = 4; $http->onWorkerStart = function () { echo 'Workerman http server is started at http://0.0.0.0:8080'.PHP_EOL; }; $http->onMessage = new OnMessage( new PsrRequestFactory( new ServerRequestFactory(), new StreamFactory(), new UploadedFileFactory() ), new WorkermanResponseEmitter(), $app ); Worker::runAll();<?php declare(strict_types=1); namespace App; use Blackfire\Client; use Chubbyphp\WorkermanRequestHandler\Adapter\BlackfireOnMessageAdapter; use Chubbyphp\WorkermanRequestHandler\OnMessage; /** @var OnMessage $onMessage */ $onMessage = ...; if (extension_loaded('blackfire') { $onMessage = new BlackfireOnMessageAdapter($onMessage, new Client()); } $http->onMessage = $onMessage;<?php declare(strict_types=1); namespace App; use Chubbyphp\WorkermanRequestHandler\Adapter\NewRelicOnMessageAdapter; use Chubbyphp\WorkermanRequestHandler\OnMessage; /** @var OnMessage $onMessage */ $onMessage = ...; if (extension_loaded('newrelic') && false !== $name = ini_get('newrelic.appname')) { $onMessage = new NewRelicOnMessageAdapter($onMessage, $name); } $http->onMessage = $onMessage;2025 Dominik Zogg