Blogger Information
Blog 20
fans 0
comment 0
visits 19644
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
测试工具-xhprof
大鱼
Original
763 people have browsed it

1、安装扩展 

  windows下把 xhprof.dll 放到extensions目录下

修改配置文件

[xhprof]
extension=xhprof.so;
; directory used by default implementation of the iXHProfRuns
; interface (namely, the XHProfRuns_Default class) for storing
; XHProf runs.
;
;xhprof.output_dir=<directory_for_storing_xhprof_runs>;调试信息的保存路径xhprof.output_dir=/tmp/xhprof

 

linux下安装

wget http://pecl.php.net/get/xhprof-0.9.2.tgztar zxf xhprof-0.9.2.tgz

cd xhprof-0.9.2/extension/sudo phpize
./configure --with-php-config=/usr/local/php/bin/php-configsudo makesudo make install

把生成的 xhprof.so 放到扩展的目录下,并配置记录存放的路径

 

php中增加调试代码 sample.php 文件

function bar($x) {  if ($x > 0) {    bar($x - 1);  } }function foo() {  for ($idx = 0; $idx < 5; $idx++) {    bar($idx);    $x = strlen("abc");  } }//开启调试xhprof_enable();

// cpu:XHPROF_FLAGS_CPU 内存:XHPROF_FLAGS_MEMORY
// 如果两个一起:XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

//要测试的php代码foo();//停止监测$xhprof_data = xhprof_disable();// display raw xhprof data for the profiler runprint_r($xhprof_data);//包含工具类,在下载的 tgz 包中可以找到$XHPROF_ROOT = realpath(dirname(__FILE__) .'/..');include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";// save raw data for this profiler run using default
// implementation of iXHProfRuns. $xhprof_runs = new XHProfRuns_Default();// xhprof_foo 指命名空间,可以为任意字符串$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");echo "---------------\n".
    "Assuming you have set up the http based UI for \n".
    "XHProf at some address, you can view run at \n".
    "http://<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo\n".
    "---------------\n";

 

以表格方式查看

  访问地址:http://test.cm/xhprof/xhprof_html/index.php?run=539d612de570e&source=xhprof_foo 

run后的参数指生成的文件名, 目录再php.ini中的 xhprof.output_dir 指定

以图表方式查看

  1、安装 Graphviz  软件(windows,linux版都有)

  2、修改配置文件 config.php

 

  3、 然后点击 view full callgraph 链接即可

 

红色节点是整个php程序执行过程中的瓶颈,黄色路径为整个过程耗时最长的路径 

 

 输出结果的含义:

ct 函数调用次数,
wt 花费的时间,
cpu 花费的 CPU 时间(微秒即百万分之一秒),
mu 使用的内存(bytes),
pmu 使用的内存峰值(bytes)。

 

web 分析结果页面含义

Calls:函数的调用次数
Incl. Wall Time (microsec) :包含内部函数花费的时间,单位微秒
Excl. Wall Time (microsec):不包含内部函数花费的时间,单位微秒
及所占百分比(%)

注:Incl.:为 Including 包含的简写
Excl.:为 Excluding 不包含的简写
Wall Time:意为挂钟时间即任务花费的时间

main():一个虚构的函数,程序根节点
bar@2:递归调用 2 次

Incl. CPU (microsecs):包含内部函数 CPU 花费的时间,单位微秒
Excl. CPU (microsec):不包含内部函数 CPU 花费的时间,单位微秒
Incl. MemUse (bytes):包含内部函数所占内存,单位字节
Excl. MemUse (bytes):不包含内部函数所占内存,单位字节
Incl. PeakMemUse (bytes):包含内部函数所占内存峰值,单位字节
Excl. PeakMemUse (bytes):不包含内部函数所占内存峰值,单位字节
及所占百分比(%)

可以认为共三种情况:1. 包括内部函数2. 不包括内部函数或者说函数本身3. 所占总数(时间或内存使用)的百分比

 

 

Function Name:方法名称。

Calls:方法被调用的次数。

Calls%:方法调用次数在同级方法总数调用次数中所占的百分比。

Incl.Wall Time(microsec):方法执行花费的时间,包括子方法的执行时间。(单位:微秒)

IWall%:方法执行花费的时间百分比。

Excl. Wall Time(microsec):方法本身执行花费的时间,不包括子方法的执行时间。(单位:微秒)

EWall%:方法本身执行花费的时间百分比。

Incl. CPU(microsecs):方法执行花费的CPU时间,包括子方法的执行时间。(单位:微秒)

ICpu%:方法执行花费的CPU时间百分比。

Excl. CPU(microsec):方法本身执行花费的CPU时间,不包括子方法的执行时间。(单位:微秒)

ECPU%:方法本身执行花费的CPU时间百分比。

Incl.MemUse(bytes):方法执行占用的内存,包括子方法执行占用的内存。(单位:字节)

IMemUse%:方法执行占用的内存百分比。

Excl.MemUse(bytes):方法本身执行占用的内存,不包括子方法执行占用的内存。(单位:字节)

EMemUse%:方法本身执行占用的内存百分比。

Incl.PeakMemUse(bytes):Incl.MemUse峰值。(单位:字节)

IPeakMemUse%:Incl.MemUse峰值百分比。

Excl.PeakMemUse(bytes):Excl.MemUse峰值。单位:(字节)

EPeakMemUse%:Excl.MemUse峰值百分比。

---

参考文章:http://blog.aboutc.net/profiling/17/php-profiler-xhprof

     http://www.cnblogs.com/bluefrog/archive/2012/03/01/2374922.html

     软件下载(并非官方源文件)http://dev.freshsite.pl/php-extensions/xhprof.html

转自:https://www.cnblogs.com/siqi/p/3790186.html

https://blog.csdn.net/wide288/article/details/50427438

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post