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 探查器配置不正确。
我想分析我的应用程序的某些部分以进行改进。推荐的方法似乎是在 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 探查器配置不正确。