Skip to content

Commit 32a5509

Browse files
committed
add runtime
1 parent 94d0dad commit 32a5509

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

src/WorkermanHttpServer.php

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,26 @@
44

55
namespace MicroPHP\Workerman;
66

7-
use League\Route\Router;
87
use League\Route\Strategy\ApplicationStrategy;
98
use MicroPHP\Framework\Application;
10-
use MicroPHP\Framework\Http\Contract\ServerInterface;
9+
use MicroPHP\Framework\Config\Config;
10+
use MicroPHP\Framework\Http\Contract\HttpServerInterface;
1111
use MicroPHP\Framework\Http\ServerConfig;
12+
use MicroPHP\Framework\Http\Traits\HttpServerTrait;
13+
use MicroPHP\Framework\Router\Router;
1214
use Workerman\Connection\TcpConnection;
1315
use Workerman\Protocols\Http\Request;
1416
use Workerman\Psr7\Response;
1517
use Workerman\Psr7\ServerRequest;
1618
use Workerman\Worker;
1719

18-
class WorkermanHttpServer implements ServerInterface
20+
class WorkermanHttpServer implements HttpServerInterface
1921
{
22+
use HttpServerTrait;
23+
2024
public function run(Router $router): void
2125
{
26+
$this->setRuntime();
2227
$strategy = new ApplicationStrategy();
2328
$strategy->setContainer(Application::getContainer());
2429
$router->setStrategy($strategy);
@@ -30,12 +35,27 @@ public function run(Router $router): void
3035

3136
$httpWorker->onMessage = function (TcpConnection $connection, Request $request) use ($router) {
3237
$psr7Request = new ServerRequest($request->rawBuffer());
33-
$serverRequest = \MicroPHP\Framework\Http\ServerRequest::fromPsr7($psr7Request);
3438

35-
$response = $router->dispatch($serverRequest);
39+
$response = $this->routeDispatch($router, \MicroPHP\Framework\Http\ServerRequest::fromPsr7($psr7Request));
3640
$connection->send(new Response($response->getStatusCode(), $response->getHeaders(), $response->getBody(), $response->getProtocolVersion(), $response->getReasonPhrase()));
3741
};
3842

3943
Worker::runAll();
4044
}
45+
46+
private function setRuntime(): void
47+
{
48+
$this->createRuntimeDir();
49+
$enableWorkermanLog = Config::get('log.enable_workerman_log');
50+
Worker::$logFile = base_path('runtime/logs/workerman.log');
51+
if (empty($enableWorkermanLog) && $this->isLinux()) {
52+
Worker::$logFile = '/dev/null';
53+
}
54+
Worker::$pidFile = 'runtime/' . uniqid('workerman_', true) . '.pid';
55+
}
56+
57+
private function isLinux(): bool
58+
{
59+
return PHP_OS_FAMILY === 'Linux';
60+
}
4161
}

0 commit comments

Comments
 (0)