Skip to content

Commit 088a56f

Browse files
frankenphp-symfony: perf improvement (#148)
Backport of some micro-optimizations by @francislavoie laravel/octane#764 (comment) --------- Co-authored-by: Francis Lavoie <[email protected]>
1 parent 3e665c7 commit 088a56f

File tree

2 files changed

+14
-19
lines changed

2 files changed

+14
-19
lines changed

psalm.baseline.xml

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,7 @@
1212
</file>
1313
<file src="src/frankenphp-symfony/src/Runner.php">
1414
<UndefinedFunction>
15-
<code><![CDATA[\frankenphp_handle_request(function () use ($server, &$sfRequest, &$sfResponse): void {
16-
// Merge the environment variables coming from DotEnv with the ones tight to the current request
17-
$_SERVER += $server;
18-
19-
$sfRequest = Request::createFromGlobals();
20-
$sfResponse = $this->kernel->handle($sfRequest);
21-
22-
$sfResponse->send();
23-
})]]></code>
15+
<code><![CDATA[\frankenphp_handle_request($handler)]]></code>
2416
</UndefinedFunction>
2517
</file>
2618
<file src="src/google-cloud/router.php">

src/frankenphp-symfony/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)