XHProf的配置和参数说明

使用XHProf
在你要监测的Php代码头尾部分别加入代码xhprof_enable()和xhprof_disable() 来启动xhprof性能数据收集,启动收集的参数跟PHP版本有关,根据PHP版本的不同采用以下两种方式
对于PHP5.5以上采用如下这种写法
(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY)
对于PHP5.5以下使用参数为
(XHPROF_FLAGS_CPU+XHPROF_FLAGS_MEMORY);
Php代码  
  1. // start profiling  
  1. xhprof_enable();  
  1. // xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); // 允许CPU和内存输出  对于PHP版本不同此处略微有些区别,php5.5以上版本使用此写法
  1. // xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);php5.5及以下版本使用此种方法
  1. // run program  
  1. ....  
  1. // stop profiler  
  1. $xhprof_data = xhprof_disable();  
  1. //  
  1. // Saving the XHProf run  
  1. // using the default implementation of iXHProfRuns.  
  1. //  
  1. $XHPROF_ROOT = "/projects/xhprof";//这里填写的就是你的xhprof的路径  
  1. include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";  
  1. include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";  
  1.   
  1. $xhprof_runs = new XHProfRuns_Default();  
  1.   
  1. // Save the run under a namespace "xhprof_foo".  
  1. //  
  1. // **NOTE**:  
  1. // By default save_run() will automatically generate a unique  
  1. // run id for you. [You can override that behavior by passing  
  1. // a run id (optional arg) to the save_run() method instead.]  
  1. //  
  1. $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");  
  1.   
  1. echo "---------------\n".  
  1. "Assuming you have set up the http based UI for \n".  
  1. "XHProf at some address, you can view run at \n".  
  1. "http://<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo\n".  
  1. "---------------\n";  

如此一来,会在上面设定的xhprof.output_dir目录里生成名字类似49bafaa3a3f66.xhprof_foo的数据文件,可以很方便的通过Web方式浏览效果:
 
使用方式如下:
http://<xhprof-ui-address>/index.php?run=49bafaa3a3f66&source=xhprof_foo 

主要指标: 
Inclusive Time (或子树时间):包括子函数所有执行时间。 
Exclusive Time/Self Time:函数执行本身花费的时间,不包括子树执行时间。 
Wall时间:花去了的时间或挂钟时间。 
CPU时间:用户耗的时间+内核耗的时间 

# 如果xhprof_enable函数写作:xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY)可以输出更多指标。 
Function Name 函数名 
Calls 调用次数 
Calls% 调用百分比 

# 消耗时间 
Incl. Wall Time (microsec) 调用的包括子函数所有花费时间 以微秒算(一百万分之一秒) 
IWall% 调用的包括子函数所有花费时间的百分比 
Excl. Wall Time (microsec) 函数执行本身花费的时间,不包括子树执行时间,以微秒算(一百万分之一秒) 
EWall% 函数执行本身花费的时间的百分比,不包括子树执行时间 

# 消耗CPU 
Incl. CPU(microsecs) 调用的包括子函数所有花费的cpu时间。减Incl. Wall Time即为等待cpu的时间 
ICpu% Incl. CPU(microsecs)的百分比 
Excl. CPU(microsec) 函数执行本身花费的cpu时间,不包括子树执行时间,以微秒算(一百万分之一秒)。 
ECPU% Excl. CPU(microsec)的百分比 

# 消耗内存 
Incl.MemUse(bytes) 包括子函数执行使用的内存。 
IMemUse% Incl.MemUse(bytes)的百分比 
Excl.MemUse(bytes) 函数执行本身内存,以字节算 
EMemUse% Excl.MemUse(bytes)的百分比 

# 消耗内存峰值 
Incl.PeakMemUse(bytes) Incl.MemUse的峰值 
IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比 
Excl.PeakMemUse(bytes) Excl.MemUse的峰值 
EPeakMemUse% EMemUse% 峰值百分比 

Xhprof使用报告
可以非常直观的看到系统页面的瓶颈,报告详细,需要配合图形插件使用有更好的效果,对于Yii框架这种入口index.php的框架产品非常方便,可以看到整个页面的执行经过。

猜你喜欢

转载自blog.csdn.net/u010793255/article/details/80818075