`
zhengdl126
  • 浏览: 2538693 次
  • 性别: 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.

相关推荐

    php 轻量级调试工具 xhprof

    **XHProf:PHP轻量级调试神器** ...总之,XHProf是PHP开发者不可或缺的性能分析工具,它能帮助我们更好地理解和改进代码性能,实现高效稳定的PHP应用。正确使用和理解XHProf,将极大地提升我们的开发效率和应用质量。

    windows xhprof php性能测试工具全套

    3. **启动XHProf**:在PHP代码中开启XHProf,一般通过`xhprof_enable()`开始一个测试会话,然后在结束时使用`xhprof_disable()`获取报告。 4. **收集数据**:运行你的PHP应用,XHProf会记录每个函数调用的详细信息...

    xhprof-php7.zip

    **xhprof:深入理解PHP性能测试工具** xhprof是一款强大的性能分析工具,专为PHP语言设计,用于帮助开发者定位代码中的性能瓶颈。这款工具由Facebook开发并开源,能够提供CPU使用率、内存消耗以及函数调用等各种...

    xhprof-0.9.4

    总的来说,xhprof-0.9.4作为一款强大的PHP性能分析工具,能够帮助开发者深入理解代码的执行过程,找出性能瓶颈,从而提升应用的整体性能。通过合理的配置和使用,开发者可以在不牺牲代码可读性的前提下,实现高效的...

    mdxhprof是PHP性能测试工具xhprof的升级版与PHP7配合使用

    4. **嵌入式模式**:MD_XHProf支持在PHP代码中轻松启动和停止性能分析,便于在特定部分进行测试。 5. **可扩展性**:它允许用户添加自定义的统计指标和报告,增强了灵活性和可定制性。 6. **兼容性**:尽管MD_...

    PHP性能分析工具XHProf安装使用教程

    XHProf提供了一个函数xhprof_enable()来打开性能分析功能,在希望进行性能分析的PHP代码的开始处调用此函数。同样,通过调用xhprof_disable()函数来关闭性能分析功能,在关闭时会返回一个包含性能分析数据的数组,...

    php_xhprof_0.10.0_PHP_5.3.3_VC6_x86

    标题 "php_xhprof_0.10.0_PHP_5.3.3_VC6_x86" 提供的信息表明,这是一个与 PHP 相关的性能分析工具,具体是 XHProf 的一个版本,适用于 PHP 5.3.3,且是针对 Visual C++ 6 (VC6) 编译器构建的 x86(32位)平台。...

    wamp+Xhprof+graphviz【可视化PHP性能测试工具安装配置详细流程】

    总结来说,通过WAMP搭建PHP开发环境,结合Xhprof进行性能分析,再利用Graphviz进行结果可视化,我们可以高效地定位并优化PHP代码中的性能问题。这个流程虽然涉及多个步骤,但一旦设置好,就能为PHP开发带来极大的...

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

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

    php轻量级的性能分析工具xhprof的安装使用

    在PHP的性能分析领域,Xdebug是一个广泛使用的工具,它可以帮助开发人员在本地开发环境中检测和分析PHP代码的性能问题。然而,对于生产环境而言,Xdebug的性能开销可能会变得过大,而且在配置上的灵活性也有所不足。...

    php_xhprof-nts-vc9-x86

    PHP_xhprof是一个强大的性能分析和剖析工具,专为PHP开发人员设计,用于深入理解代码的运行时性能。这个“php_xhprof-nts-vc9-x86”是针对非线程安全(NTS)版本的PHP,使用Visual C++ 9(VC9)编译器构建的xhprof...

    drupal-xhprof:Drupal 的 xhprof 模块

    Drupal-xhprof 是一个专为 Drupal 内容管理系统设计的扩展模块,它允许开发者使用 Facebook 开发的 xhprof 工具来分析和优化 Drupal 应用程序的性能。xhprof 是一个强大的性能分析器,它可以帮助我们深入了解 PHP ...

    php性能监测

    XHProf是一款由Facebook开发的高性能PHP性能分析工具,它能够以细粒度的方式捕捉到函数调用的时间、内存使用情况等信息,非常适合用于大规模系统的性能监控。 - **特点**: - **轻量级**: 对于生产环境来说,XHProf...

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

    ### PHP性能测试工具xhprof使用详解 #### 1. xhprof概述 xhprof是一款由Facebook开源的PHP性能测试工具,主要用于性能分析和优化。它是一个轻量级的profile工具,用于监控PHP应用程序的性能,如执行时间和内存消耗...

Global site tag (gtag.js) - Google Analytics