Skip to content

Commit 19b7bc3

Browse files
frankenphp-symfony: perf improvement (#148)
Backport of some micro-optimizations by @francislavoie laravel/octane#764 (comment) --------- Co-authored-by: Francis Lavoie <lavofr@gmail.com>
1 parent d7539a9 commit 19b7bc3

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

src/Runner.php

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,25 @@ public function __construct(private HttpKernelInterface $kernel)
2222

2323
public function run(): int
2424
{
25+
$kernel = $this->kernel;
2526
$server = array_filter($_SERVER, static fn (string $key) => !str_starts_with($key, 'HTTP_'), ARRAY_FILTER_USE_KEY);
2627
$server['APP_RUNTIME_MODE'] = 'web=1&worker=1';
2728

28-
do {
29-
$ret = \frankenphp_handle_request(function () use ($server, &$sfRequest, &$sfResponse): void {
30-
// Merge the environment variables coming from DotEnv with the ones tight to the current request
31-
$_SERVER += $server;
29+
$handler = static function () use ($kernel, $server, &$sfRequest, &$sfResponse): void {
30+
// Merge the environment variables coming from DotEnv with the ones tied to the current request
31+
$_SERVER += $server;
32+
33+
$sfRequest = Request::createFromGlobals();
34+
$sfResponse = $kernel->handle($sfRequest);
3235

33-
$sfRequest = Request::createFromGlobals();
34-
$sfResponse = $this->kernel->handle($sfRequest);
36+
$sfResponse->send();
37+
};
3538

36-
$sfResponse->send();
37-
});
39+
do {
40+
$ret = \frankenphp_handle_request($handler);
3841

39-
if ($this->kernel instanceof TerminableInterface && $sfRequest && $sfResponse) {
40-
$this->kernel->terminate($sfRequest, $sfResponse);
42+
if ($kernel instanceof TerminableInterface && $sfRequest && $sfResponse) {
43+
$kernel->terminate($sfRequest, $sfResponse);
4144
}
4245

4346
gc_collect_cycles();

0 commit comments

Comments
 (0)