`
zhengdl126
  • 浏览: 2509686 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

php代码性能分析工具:XHProf

 
阅读更多

http://www.ooso.net/archives/522
http://www.cnblogs.com/sunvince/archive/2011/04/07/2037616.html
http://hi.baidu.com/thinkinginlamp/blog/item/f4bd08fa1a03ba9e59ee90fd.html

 

 

 

XHProf是Facebook开源的一个PHP性能检测程序,里面有很多直观的数据来说明问题,比如调用次数、执行时间、内存使用、CPU占用等

 

 

 

编译安装

获取源代码包
root@sourcjoy> wget http://pecl.php.net/get/xhprof-0.9.2.tgz
解压

root@sourcjoy> tar zxf xhprof-0.9.2.tgz
root@sourcjoy> cd xhprof-0.9.2
复制web访问目录到web应用目录
root@sourcjoy> cp -r xhprof_html xhprof_lib /var/www/html/
  #复制xhprof的展示页面目录和库目录到web目录下,可以为xhprof_html建个虚拟目录来访问,也可以把这两个目录拷贝到应用的根目录下。
root@sourcjoy> cd extension/
编译插件
root@sourcjoy> /usr/local/webserver/php/bin/phpize
root@sourcjoy> ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
root@sourcjoy> make
root@sourcjoy> make install


注意:这里安装的时候可能会出现访问php.ini没权限的问题,请把php.ini的权限改成666:
chmod 666 /usr/local/webserver/php/etc/php.ini

配置 php.ini 文件
root@sourcjoy> vi /usr/local/webserver/php/etc/php.ini 在合适位置加入以下内容:

[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=/var/logs/xhprof

重启web服务器

为了更加清晰显示程序执行、调用结构,安装Graphviz,如果安装了Graphviz,XHProf会用比较牛的图形方式展现统计数据。
获取源码包
root@sourcjoy> wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
root@sourcjoy> tar zxf graphviz-2.24.0.tar.gz
root@sourcjoy> cd graphviz-2.24.0
编译安装
root@sourcjoy> ./configure
root@sourcjoy> make
root@sourcjoy> make install

 

 

 

 

接下来在要统计的php应用中加入以下语句:
xhprof_enable();  //统计的代码部 分之前加,如果要显示CPU占用 可以加入XHPROF_FLAGS_CPU参数,内存是XHPROF_FLAGS_MEMORY,如果两个一起:XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY,如:xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

xhprof_disable(); //统计的代码部分之后加

这样xhprof就可以统计当前页面的函数性能情况了。xhprof会把每次访问加入统计代码的页面的性能统计结果在指定目录下生成一个文件,文件名命名方式为:本次访问的系统ID.命名空间,每次刷新页面都会重新生成一个文件,每个的系统ID都不同。

然后通过xhprof_html目录的http访问url来查看结果。如:http://app/xhprof_html/?run=运行id&source=命名空间(其中运行ID和命名空间可以根据xhprof生成的文件名来确定)

 

 

xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

//require_once ($yii);
//Yii::createWebApplication($config)->run();

$xhprofData = xhprof_disable();
Yii::import('application.components.monitor.xhprof.XhprofLib');
Yii::import('application.components.monitor.xhprof.XHProfRunsDefault');
$xhprofRuns = new XHProfRunsDefault();
$runId = $xhprofRuns->saveRun($xhprofData, 'test'); 
 


以yii为例子访问方式如下:

http://test/index.php?r=xhprof/default/index
http://test/xhprof_html/?run=4f263128d1bf6&source=test&all=1
(4f263128d1bf6是随机生成的文件名)

说明:
1. Inclusive Time :包括子函数所有执行时间。
2. Exclusive Time/Self Time:函数执行本身花费的时间,不包括子树执行时间。

3. Wall Time:花去了的时间或挂钟时间。
4. CPU Time:用户耗的时间+内核耗的时间
5.Inclusive CPU:包括子函数一起所占用的CPU
6.Exclusive CPU:函数自身所占用的CPU

 

 

上图更直观些:

 

 


 

 


 

 

 

 

 

 

 

  • 大小: 88.5 KB
  • 大小: 95.2 KB
分享到:
评论
2 楼 candou 2015-08-05  
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

//require_once ($yii);
//Yii::createWebApplication($config)->run();

$xhprofData = xhprof_disable();
Yii::import('application.components.monitor.xhprof.XhprofLib');
Yii::import('application.components.monitor.xhprof.XHProfRunsDefault');
$xhprofRuns = new XHProfRunsDefault();
$runId = $xhprofRuns->saveRun($xhprofData, 'test');


这段代码放到index.php文件里吗
?
1 楼 candou 2015-08-05  
$xhprofRuns = new XHProfRunsDefault(); 
提示找不到这个类 XHProfRunsDefault.

相关推荐

    windows xhprof php性能测试工具全套

    里面是windows xhprof的测试工具,包括测试工具,画图软件,代码修改和测试工具部署。注意的是自己php的版本我这里是5.5的

    PHP性能测试工具xhprof安装与使用方法详解

    本文实例分析了PHP性能测试工具xhprof安装与使用方法。分享给大家供大家参考,具体如下: xhprof概述: XHProf是一个分层PHP性能分析工具。它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用...

    PHP性能分析工具xhprof的安装使用与注意事项

    xhprof由facebook开源出来的一个PHP性能监控工具,占用资源很少,甚至能够在生产环境中进行部署。 它可以结合graphviz使用,能够以图片的形式很直观的展示代码执行耗时。 下面主要讲一下安装和使用过程 1、安装 ...

    XHProf简明教程

    XHProf是Facebook开源的php性能分析工具,是php的一个扩展。windows平台可以通过此链接下载,同时还需下载制图工具Graphviz,最后去github下载相关的代码(只需xhprof_html、xhprof_lib、examples)。

    基于在生产环境中使用php性能测试工具xhprof的详解

    xhprof 是facebook开源出来的一个php性能测试工具,也可以称之为profile工具,这个词不知道怎么翻译才比较达意。跟之前一直使用的xdebug相比,有很多类似之处。以前对xdebug有一些记录还可以供参考,但是它的缺点是...

    利用PHP扩展Xhprof分析项目性能实践教程

    项目即将上线,想通过一些工具来分析代码的稳定性和效率,想起在上个团队时使用过的xhprof扩展;因为换了新电脑,所以需要重新编译此扩展,现将安装与实际排查过程完整记录下来,方便自己回顾和帮助更多的读者。 ...

    phpray:php在线Test \ Debug \ Profile工具

    PHP Profile工具:通过xhprof收集性能信息,查看方法执行过程的路径及耗时情况。作为PHP测试工具,PHPRay并不提供类似PHPUnit的自动化测试功能,也没有代码覆盖率的要求,更多的是通过执行待测试的方法和在控制台...

    php调试工具ydb.zip

    ydb 是像gdb一样的php调试工具,用扩展实现,可以在运行过程中查看变量值,也可以进行性能测试,而不用对源代码进行任何更改,就像xdebug和xhprof 中提供的功能,但使用更方便  ydb也可以称为一个在线调试工具,...

    php运行状态报告工具php-timer.zip

    最近写了一个异步mysql客户端的封装,想与传统的串行方式做下性能对比。包括运行时间、内存使用情况等信息。在github和packagist上搜索并没有找到自己想要的,xhprof又太大了,结果也太复杂,不符合现在的需要。所以...

    使用XHGui来测试PHP性能的教程

    Profiling能够深入程序的内部,展现request处理过程中每一部分代码的性能;同时,也可以确定有问题的请求(request);对于有问题的请求,我们还可以确定性能问题发生在请求内部的位置。对于PHP,我们有多种...

Global site tag (gtag.js) - Google Analytics