无需修改配置,如何单独触发Xdebug的性能分析器?
问题:无需修改配置单次触发Xdebug性能分析
我的容器中Xdebug已正常工作,可使用调试器单步调试代码。当前xdebug.ini配置如下:
xdebug.client_host=host.docker.internal xdebug.discover_client_host=0 xdebug.mode=develop,debug xdebug.start_with_request=trigger xdebug.idekey=PHPSTORM xdebug.output_dir=/app
当前触发调试的方式:
- HTTP请求:访问端点添加查询参数
?XDEBUG_SESSION_START=PHPSTORM - CLI环境:先执行
export XDEBUG_TRIGGER=1,再调用脚本
现在需要实现:无需修改xdebug.ini配置,单次触发性能分析器生成cachegrind文件。曾尝试在查询字符串中添加XDEBUG_TRIGGER=profile但无效果。(注:已知可在ini中为xdebug.mode添加profile并重启容器,但希望通过环境变量实现,无需修改配置或重启服务)
正确的单次触发方式
Xdebug 3中,要在不修改xdebug.mode配置的前提下触发性能分析,需要结合触发开关和模式指定两个参数:
1. HTTP请求场景
在查询字符串中同时传入两个参数:
?XDEBUG_TRIGGER=1&XDEBUG_MODE=profile
也可以通过Cookie传递:设置XDEBUG_TRIGGER=1和XDEBUG_MODE=profile的Cookie后,再访问目标端点。
2. CLI场景
执行脚本时临时通过环境变量指定模式:
XDEBUG_TRIGGER=1 XDEBUG_MODE=profile php your_script.php
或者分两步导出环境变量再执行:
export XDEBUG_TRIGGER=1 export XDEBUG_MODE=profile php your_script.php
原理说明
XDEBUG_TRIGGER=1用来触发Xdebug启动(对应配置里的xdebug.start_with_request=trigger)XDEBUG_MODE=profile临时覆盖xdebug.mode的配置,仅本次请求启用性能分析模式,不会修改持久化的ini配置
执行完成后,cachegrind文件会生成在你配置的/app目录下。
内容的提问来源于stack exchange,提问作者AntonioCS
相关产品推荐
相关产品推荐

