Xdebug是最流行的PHP分析器之一,使用它分析应用的调用堆栈,能轻易找出瓶颈和性能问题。
配置
Xdebug的配置保存在php.ini文件中。下面是我推荐使用的Xdebug配置。记得要修改分析结果的输出目录。保存这些设置后,要重启PHP进程。
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir = /path/to/profiler/results
xdebug.profiler_enable=0
这么设置是为了不让Xdebug自动运行。我们不想让Xdebug在每次请求时都自动运行,因为这会极大地降低性能,还会阻碍开发。
xdebug.profiler_enable_trigger=1
这么设置是为了在需要时启动Xdebug。我们可以在PHP应用的任何一个URL中加上XDEBUG_PROFILE=1查询参数,在单个请求中启动Xdebug。Xdebug检测到这个查询参数时,会分析当前请求,然后生成报告,将其保存到xdebug.profiler_output_dir设置指定的输出目录。
xdebug.profiler_output_dir=/path/to/profiler/results
这是一个目录的路径,这个目录用于保存分析器生成的报告。如果是复杂的PHP应用,分析器生成的报告可能很大(例如,500MB或更大)。记得要把这个设置的值改为正确的文件系统路径。
触发运行
因为我们把xdebug.profilter_enable的值设为了0,所以Xdebug不会自动运行。我们可以在PHP应用的任何一个URL中加上XDEBUG_PROFILE=1查询参数,例如/users/show/1?XDEBUG_PROFILE=1,在单个请求中触发运行Xdebug。Xdebug检测到XDEBUG_PROFILE查询参数时,会在当前请求中启动Xdebug。分析器生成的结果会转储到xdebug.profiler_output_dir设置指定的目录中。
分析
windows使用WinCacheGrind
linux使用KCacheGrind
Web浏览器中使用WebGrind
别名开启IDE调试只需要打开配置xdebug_remote_enable,其余配置留默认值
xdebug.remote_enable=On
命令行下IDE断点调试
export XDEBUG_CONFIG="idekey=phpstorm"
php -d xdebug.profiler_enable=1 index.php
转自: 《Modern PHP》,http://xdebug.org/docs/remote