Xhprof分析及xdebug性能优化

来自技术开发小组内部wiki
跳转至: 导航搜索

安装

pecl install xhprof-beta

$ wget https://github.com/facebook/xhprof/tarball/master -O xhprof.tar.gz
$ tar zxf xhprof.tar.gz
$ cd facebook-xhprof-b8c76ac/extension/
# phpize
# ./configure --with-php-config=`/path/to/php-config`
# make && make install
# make test

配置

修改php.ini

extension = xhprof.so
;可以dl 动态加载
; 注意:output_dir 必须存在且可写
xhprof.output_dir = /tmp/xhprof
;ini_set('xhprof.output_dir',$path)

调试使用

//调用开始 可以从程序的某个部分开始,不必执着于入口 
xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU);
//调用结束 ,在期望的地方结束,不必是结尾
$xhprof_data        = xhprof_disable();
//生成文件url并浏览

参数说明

Total Incl. Wall Time (microsec):	67,266 microsecs  花费的时间 0.67
Total Incl. CPU (microsecs):	66,989 microsecs      花费的 CPU 时间 0.66989
Total Incl. MemUse (bytes):	7,255,144 bytes           内存使用 7.25M
Total Incl. PeakMemUse (bytes):	7,419,888 bytes       内存峰值  7.42M
Number of Function Calls:	3,417                     函数调用   3417次  
funciton name : 函数名
calls: 调用次数
Incl. Wall Time (microsec): 函数运行时间(包括子函数)
IWall%:函数运行时间(包括子函数)占比
Excl. Wall Time(microsec):函数运行时间(不包括子函数)
EWall%:函数运行时间(不包括子函数)

父母帮调试

//替换 /home/www/fmb.phplib/iniconfig/global.php  $forceXprof=0 ==> $forceXprof=1
$forceXprof=1;
//高级用法  
if($_COOKIE['xxx']){
    $forceXprof=1;
}
if($_GET['xxx']){
    $forceXprof=1;
}

快速优化查看

http://xprof.fumubang.net/
#搜索
#指定域名 
#指定路径
#查看调用耗时 

demo例子

http://xprof.fumubang.net/xprof/xhprof_html/?run=439&source=xhprof_foo