PHP 修练之道之二:性能调试
说起php的性能调试大家都会想到 xdebug+kcachegrind. 不过这种搭配是在linux 环境下玩的,感兴趣可以看看这篇: http://www.phpkitchen.com/index.php?/archives/637-Profiling-your-Apps-with-Xdebug-and-KCachegrind.html
如果是开发环境是windows ,那就选 xdebug 了.以下内容引自 http://www.lostk.com/blog/install_xdebug/
xdebug 在windows 下安装非常简单:
1、去www.xdebug.org下载相应版本php的模块文件,保存下载后的文件到php的ext目录,可以自己修改文件的名称,现在最新的版本是 2.0.1。
2、修改php.ini,增加如下信息[Xdebug]<br />zend_extension_ts="d:/httpd/php5/ext/xdebug-xxx.dll"<br />xdebug.auto_trace=on<br />xdebug.collect_params=on<br />xdebug.collect_return=on<br />xdebug.trace_output_dir="d:Tempxdebug"<br />xdebug.profiler_enable=on<br />xdebug.profiler_output_dir="d:Tempxdebug"
参数解释:
zend_extension_ts="d:/php/ext/xdebug-xxx.dll"
加载xdebug模块。这里不能用extension=xdebug-xxx.dll的方式加载,必须要以zend的方式加载,否则安装上后, phpinfo打印出来的里的xdebug段的会有XDEBUG NOT LOADED AS ZEND EXTENSION的警告信息。
xdebug.auto_trace=on
自动打开“监测函数调用过程”的功模。该功能可以在你指定的目录中将函数调用的监测信息以文件的形式输出。此配置项的默认值为off。
xdebug.collect_params=on
打开收集“函数参数”的功能。将函数调用的参数值列入函数过程调用的监测信息中。此配置项的默认值为off。
xdebug.collect_return=on
打开收集“函数返回值”的功能。将函数的返回值列入函数过程调用的监测信息中。此配置项的默认值为off。
xdebug.trace_output_dir="d:Tempxdebug"
设定函数调用监测信息的输出文件的路径。
xdebug.profiler_enable=on
打开效能监测器。
xdebug.profiler_output_dir="d:Tempxdebug"
设定效能监测信息输出文件的路径。
目前,xdebug 不能和 Zend Optimizer 以及其他 Zend 扩展 (DBG, APC, APD etc) 同时工作,目前这个问题正在修复中,期待一下版本吧
还有一些更为具体的参数设定,详见:http://www.xdebug.org/docs-settings.php
3、重启apache
运行php后,temp/xdebug 目录下会生成trace.××××××.xt 等文件:
* 函数调用过程监测信息文件的文件名格式:trace.××××××.xt。这个文件可以直接查看,里面包含了函数运行的时间,函数调用的参数值,返回值,所在的文件和位置等信息。内容格式还是相对直观的。
* 效能监测文件的文件名格式:cachegrind.out.××××××××。
这个文件也可以直接查看,不过信息格式不易被人类所理解,
所以我们需要接下来的一个软件 wincachegrind 。安装也很单
1、到http://sourceforge.net/projects/wincachegrind/下载安装wincachegrind
2、安装运行后,点击Tools->options,设定你的working folder(php.ini里xdebug.profiler_output_dir的值)
这样就可以比较直观的查看效能监测文件的信息了。
控制输出CacheGrind文件名的控制
http://xdebug.org/docs/all_settings#trace_output_name
原文中还有ubuntu 下的安装方法,我这不就不再抄了.
另外如果你是用Eclipse 开发php ,就可以直接装 phpeclipse plugin ,里面有xdebug
更新的url:http://update.phpeclipse.net/update/nightly
