Skip to content

Instantly share code, notes, and snippets.

@dominikzogg
Last active August 7, 2020 09:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dominikzogg/0952f0f119ca1e3f91571df6ba49813b to your computer and use it in GitHub Desktop.
Save dominikzogg/0952f0f119ca1e3f91571df6ba49813b to your computer and use it in GitHub Desktop.
workerman
<?php
declare(strict_types=1);
use Chubbyphp\Framework\Application;
use Chubbyphp\Framework\Middleware\ExceptionMiddleware;
use Chubbyphp\Framework\Middleware\RouterMiddleware;
use Chubbyphp\Framework\RequestHandler\CallbackRequestHandler;
use Chubbyphp\Framework\Router\FastRoute\Router;
use Chubbyphp\Framework\Router\Route;
use Chubbyphp\WorkermanRequestHandler\OnMessage;
use Chubbyphp\WorkermanRequestHandler\PsrRequestFactory;
use Chubbyphp\WorkermanRequestHandler\WorkermanResponseEmitter;
use Psr\Http\Message\ServerRequestInterface;
use Slim\Psr7\Factory\ResponseFactory;
use Slim\Psr7\Factory\ServerRequestFactory;
use Slim\Psr7\Factory\StreamFactory;
use Slim\Psr7\Factory\UploadedFileFactory;
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$responseFactory = new ResponseFactory();
$app = new Application([
new ExceptionMiddleware($responseFactory, true),
new RouterMiddleware(new Router([
Route::get('/hello/{name:[a-z]+}', 'hello', new CallbackRequestHandler(
function (ServerRequestInterface $request) use ($responseFactory) {
$name = $request->getAttribute('name');
$response = $responseFactory->createResponse();
$response->getBody()->write(sprintf('Hello, %s', $name));
return $response;
}
))
]), $responseFactory),
]);
$http = new Worker('http://0.0.0.0:8080');
$http->count = 4;
$http->onWorkerStart = function () {
echo 'Workerman http server is started at http://localhost:8080'.PHP_EOL;
};
$http->onMessage = new OnMessage(
new PsrRequestFactory(
new ServerRequestFactory(),
new StreamFactory(),
new UploadedFileFactory()
),
new WorkermanResponseEmitter(),
$app
);
Worker::runAll();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment