PHP 单个请求配置文件

PHP single request profile

我想分析我的应用程序的某些部分以进行改进。推荐的方法似乎是在 php.ini 中启用 xdebug,但这会使它在每个请求上写入分析器内容,这很慢并生成大量文件。

虽然不断启用和禁用会很烦人。

我想要的是我可以从命令行 运行 获得一些东西,它将 运行 对特定 URL 的特定请求,并在 运行 时将分析器报告写入特定文件夹但其余时间不分析。

确保您的 php.ini 包含:

xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1

现在您可以使用 cURL 分析单个网页:

curl -I http://my-website.local/?XDEBUG_PROFILE

注意 XDEBUG_PROFILE 查询参数:这是启用 Xdebug 分析器的原因(请参阅文档:https://xdebug.org/docs/profiler)。

cURL 将向我们展示:

HTTP/1.1 200 OK
Date: Tue, 10 Mar 2020 08:45:50 GMT
Server: Apache/2.4.29 (Ubuntu)
X-Powered-By: PHP/7.4.2
X-Xdebug-Profile-Filename: /tmp/cachegrind.out.6173
Content-Type: text/html; charset=UTF-8

探查器为我们添加了一个 X-Xdebug-Profile-Filename header,其中包含 cachegrind 文件,然后我们可以在 KCachegrind 等程序中打开它。

如果 header 不存在,则说明您使用的 Xdebug 版本低于 2.6,或者 Xdebug 探查器配置不正确。