You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需修改配置,如何单独触发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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 09:20:42