Popular Articles
Recent Stories
function is_utf8($string) { return preg_match('%^(?:[\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*$%xs', $string);
}
PHP.ini的配置文件: [Xdebug] zend_extension_ts="d:/wamp/php/ext/php_xdebug-2.0.4-5.2.8.dll" xdebug.default_enable = On xdebug.profiler_enable=on xdebug.auto_trace=on xdebug.collect_params=on xdebug.collect_return=on xdebug.trace_output_dir="D:\wamp\debugcache" xdebug.profiler_output_dir="D:\wamp\debugcache" xdebug.remote_enable=on xdebug.remote_handler=dbgp debug.remote_mode=req xdebug.remote_host= localhost xdebug.remote_port=9000 xdebug.idekey=ECLIPSE_DBGP xdebug.show_exception_trace=on xdebug.show_local_vars=on xdebug.show_mem_delta=on
在网上看到一篇文章说xdebug+wincachegrind是php性能调优好工具。于是去下载了这个,安装使用一下看看。:)
下面是我的安装配置
1 下载xdebug http://www.xdebug.org
下载wincachegrind:http://sourceforge.net/projects/wincachegrind/
2 把xdebug copy到php扩展文件目录:d:/wamp/bin/php/php5.2.5/ext/
编辑php.ini ,在其中添加如下配置行:
zend_extension_ts="d:/wamp/bin/php/php5.2.5/ext/xdebug.dll"
;;;;;;;;;;;;;;;;;;;
; Xdebug Settings ;
;;;;;;;;;;;;;;;;;;;
xdebug.auto_trace=On
xdebug.collect_params=On
xdebug.collect_return=On
xdebug.trace_output_dir="d:/wamp/bin/php/debuginfo"
xdebug.profiler_enable=On
xdebug.profiler_output_dir="d:/wamp/bin/php/debuginfo"
然后重新启动apache.
配置说明
zend_extension_ts="d:/wamp/bin/php/php5.2.5/ext/xdebug.dll"
加载xdebug模块。这里不能用extension=php_xdebug.dll的方式加载,必须要以zend的方式加载。安装文档上说的。
xdebug.auto_trace=on;
自动打开“监测函数调用过程”的功能模块。该功能可以在你指定的目录中将函数调用的监测信息以文件的形式输出。此配置项的默认值为off。
xdebug.collect_params=on;
打开收集“函数参数”的功能。将函数调用的参数值列入函数过程调用的监测信息中。此配置项的默认值为off。
xdebug.collect_return=on
打开收集“函数返回值”的功能。将函数的返回值列入函数过程调用的监测信息中。此配置项的默认值为off。
xdebug.trace_output_dir="d:/wamp/bin/php/debuginfo"
设定函数调用监测信息的输出文件的路径。
xdebug.profiler_enable=on
打开效能监测器。
xdebug.profiler_output_dir="d:/wamp/bin/php/debuginfo"
设定效能监测信息输出文件的路径。
3 安装WinCacheGrind,这个就不用说了:)。
4 打开IE访问http://localhost:8080/demo/index.php
然后打开目录:d:/wamp/bin/php/debuginfo/ 可以看到自动生成的文件cachegrind.out.xxxx 和 trace.2732500414.xt
用WinCacheGrind就可以看到index.php执行过程中调用了那些function,mothed,定义了那些变量,载入了那些文件和执行这些操作花费的时间。
呵呵,这样就可以开始寻找那些花费时间最都的操作了!
下面贴个图:
为什么需要 Debugger? 很 多PHP程序 员调试使用echo、print_r()、var_dump()、printf()等,其实对于有较丰富开发 经验的程序员 来说这些也已经足够 了,他们往往可以在程序执行的过程中,通过输出特定变量的值可以判断程序执行是否正确,甚至效率高低也可以看出来(当然可能还需要使用一些时间函数 )。那 么我们为什么还需要一个专门的调试程序来监控我们的程序运行 呢? 这个问题的答案不妨留到后面来揭晓。