在对PHP代码进行断点调试时,曾经使用过XDebug。最近才知道XDebug还可以对PHP Web代码进行性能分析。下面大概介绍一下使用方法。
首先需要下载XDebug,可以链接该地址http://www.xdebug.com/download.php。这里面需要注意,所下载的XDebug版本必须和你所使用的PHP版本吻合,否则会造成系统崩溃。如果系统崩溃了,就下载其他版本试试看。我下载的是Windows版的适用于PHP5.2.8的dll文件,下载完成之后,我把文件名改为“php_xdebug.dll”。
然后需要把php_xdebug.dll放置到php的ext录里,在我们本机上是“C:\wamp\bin\php\php5.2.8\ext”。我安装的是WampServer,而且安装在C盘根目录。
接下来,需要修改php.ini文件。在文件最末尾添加如下内容:
[Xdebug]
zend_extension_ts="C:/wamp/bin/php/php5.2.8/ext/php_xdebug.dll"
xdebug.auto_trace=1
xdebug.collect_params=1
xdebug.collect_return=1
xdebug.trace_output_dir="D:/temp/xdebug"
xdebug.profiler_enable=1
xdebug.profiler_output_dir="D:/temp/xdebug"
xdebug.profiler_output_name="cachegrind.out.%t"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
“xdebug.profiler”选项就是告诉XDebug要对PHP代码进行性能分析。分析结果会输出到“D:\temp\xdebug”目录下,文件是以“cachegrind.out.时间戳”命名。
最后,重启Apache服务器。如果重启过程没有遇到错误就算大功告成。通过phpinfo函数可以看到XDebug配置信息,如图1所示:
(图1)
我们可以通过请求本地上的一个页面试验一下。在D:\temp\xdebug目录下冒出来两个文件:
- cachegrind.out.1277560600
- trace.3495983249.xt
“1277560600”是时间戳,这个值就是“xdebug.profiler_output_name="cachegrind.out.%t"”中的“%t”。这两个文件都是文本文件,你可以通过记事本查看里面的内容。不过很遗憾,这里面的内容很难看懂。但也很幸运,有工具可以帮助我们看懂这两个文件。http://www.xdebug.com/docs/profiler这个地址中介绍了三个分析工具KCacheGrind(适用于Linux)、WinCacheGrind(适用于Windows)和Webgrind(Web页面方式)。
我选用了Webgrind。到http://code.google.com/p/webgrind/下载,然后解压到Apache网站根目录下(也就是htdocs目录下)即可,基本上不需要修改任何配置。运行http://127.0.0.1/webgrind,就可以查看性能分析记录。如图2所示:
(图2)