-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathworker.php
More file actions
56 lines (43 loc) · 1.67 KB
/
Copy pathworker.php
File metadata and controls
56 lines (43 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
/**
* TurboFrame RoadRunner Worker
* This script handles high-performance requests using the RoadRunner Go server.
*/
use Spiral\RoadRunner;
use Nyholm\Psr7;
use TurboFrame\Core\Application;
define('TURBO_START', microtime(true));
define('BASE_PATH', __DIR__);
require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/src/helpers.php';
// Initialize Persistent Application
$app = Application::getInstance();
$app->boot();
// RoadRunner Worker Initialization
$worker = RoadRunner\Worker::create();
$psrFactory = new Psr7\Factory\Psr17Factory();
$psr7 = new RoadRunner\Http\PSR7Worker($worker, $psrFactory, $psrFactory, $psrFactory);
while ($request = $psr7->waitRequest()) {
try {
// 1. Convert PSR-7 Request to TurboFrame compatible state
// (For now using simple Method/URI bridge)
$method = $request->getMethod();
$uri = $request->getUri()->getPath();
// Populate globals for legacy/helper compatibility
$_GET = $request->getQueryParams();
$_POST = $request->getParsedBody() ?? [];
$_COOKIE = $request->getCookieParams();
$_SERVER = $request->getServerParams();
// 2. Handle Request
$tfResponse = $app->handle($method, $uri);
// 3. Convert TurboFrame Response to PSR-7
$response = $psrFactory->createResponse($tfResponse->getStatusCode());
foreach ($tfResponse->getHeaders() as $name => $value) {
$response = $response->withHeader($name, $value);
}
$response->getBody()->write($tfResponse->getBody());
$psr7->respond($response);
} catch (\Throwable $e) {
$psr7->getWorker()->error((string)$e);
}
}