49 lines
1.3 KiB
PHP
49 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\AppFactory;
|
|
|
|
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT);
|
|
ini_set('display_errors', '1');
|
|
|
|
require dirname(__DIR__) . '/vendor/autoload.php';
|
|
|
|
$environment = AppFactory::buildEnvironment([
|
|
App\Environment::IS_CLI => false,
|
|
]);
|
|
$diBuilder = AppFactory::createContainerBuilder($environment);
|
|
|
|
$httpFactory = new App\Http\HttpFactory();
|
|
$worker = \Spiral\RoadRunner\Worker::create();
|
|
|
|
$psr7Worker = new Spiral\RoadRunner\Http\PSR7Worker($worker, $httpFactory, $httpFactory, $httpFactory);
|
|
|
|
// Allow for streaming larger responses back to Roadrunner.
|
|
$psr7Worker->chunkSize = 1024 * 25;
|
|
|
|
while (true) {
|
|
try {
|
|
$request = $psr7Worker->waitRequest();
|
|
if ($request === null) {
|
|
break;
|
|
}
|
|
} catch (\Throwable $e) {
|
|
$psr7Worker->respond($httpFactory->createResponse(400));
|
|
continue;
|
|
}
|
|
|
|
try {
|
|
$di = AppFactory::buildContainer($diBuilder);
|
|
$app = AppFactory::buildAppFromContainer($di);
|
|
|
|
$response = $app->handle($request);
|
|
$psr7Worker->respond($response);
|
|
} catch (\Throwable $e) {
|
|
$psr7Worker->respond($httpFactory->createResponse(500, 'Critical error'));
|
|
$psr7Worker->getWorker()->error((string)$e);
|
|
}
|
|
|
|
gc_collect_cycles();
|
|
}
|