Symfony4 在 Windows 上运行缓慢 - 在 $kernel->terminate($request, $response); 之后会发生什么?

问题描述

我刚刚在基于 Windows 10 的 symfony 安装中做了一个奇怪的观察。

我总是得到相当令人失望的响应时间,所以我想使用分析器来检查原因。 我立即发现了一个有趣的偏差:虽然分析器将总数加起来约为 1000 毫秒,但浏览器显示 TTFB 约为 5800 毫秒?

我的 public\index.PHPhttps://github.com/symfony/recipes/blob/master/symfony/framework-bundle/4.4/public/index.php

事情是这样的:当我在 $kernel->terminate($request,$response); 之后放置一个 exit();我的浏览器 TTFB 突然出现在 1600 毫秒!!!

这太令人兴奋了,因为我一直认为在 index.PHP 的最后一行之后什么也没有发生? 有人可以解释一下,为什么我的 symfony 路由调用在准备好后被阻止了几秒钟?

解决方法

事实证明,这种延迟必须在我的 php.ini 中启用 xdebug 时执行某些操作,而 IDE(在我的示例中为 VS CODE)没有运行调试器。

当我在 IDE 中打开调试(并删除所有断点)时,TTFB 与 exit() 就位时一样短。 当我关闭Xdebug时,它是一样的。

我认为 xdebug 尝试与 IDE 通信(但没有成功)必须阻止 HTTP 响应额外的 2 - 3 秒。