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


Posted in PHP onMay 13, 2015

HProf是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开关来控制是否进行profile。基于浏览

器的性能分析用户界面能更容易查看,或是与同行们分享成果。也能绘制调用关系图。在数据收集阶段,它记录调用次数的追踪和包容性的指标弧在动态callgraph的一个程序。

它独有的数据计算的报告/后处理阶段。在数据收集时,XHProfd通过检测循环来处理递归的函数调用,并通过给递归调用中每个深度的调用一个有用的命名来避开死循环。

XHProf的轻量级性质和汇聚功能,使得它非常适合用于收集“生产环境”的性能统计数据的统计。

1. 安装XHProf

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

tar zxf xhprof-0.9.2.tgz 

cd xhprof-0.9.2 

cp -r xhprof_html xhprof_lib <directory_for_htdocs> 

cd extension 

phpize 

./configure 

make 

make install

2. 配置 php.ini 文件

[xhprof] 

extension=xhprof.so 

; 

; directory used by default implementation of the iXHProfRuns 

; interface (namely, the XHProfRuns_Default class) for storing 

; XHProf runs. 

; 记得<directory_for_storing_xhprof_runs>WEB要有写入权限 

xhprof.output_dir=<directory_for_storing_xhprof_runs>

重启服务让修改生效,现在就可以使用XHProf了,不过为了显示效果更炫,最好继续安装Graphviz。

3. 安装Graphviz

wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.26.3.tar.gz   

tar zxf graphviz-2.26.3.tar.gz    

cd graphviz-2.26.3   

./configure 

make    

make install

安装完成后,会生成/usr/local/bin/dot文件,你应该确保路径在PATH环境变量里,以便XHProf能找到它。

4. 应用XHProf

xhprof_enable();//打开xhprof
/******程序逻辑 Start******/

function test1(){

 sleep(3);

 return;

}

function test2(){

 test1();

}

function test3(){

 test2();

}

function p(){

 echo '<h3>xhprof test</h3>';

}

p();

test3();

/******程序逻辑 End******/
$xhprof_data = xhprof_disable();//关闭xhprof
//保存xhprof数据

include_once '../xhprof_lib/utils/xhprof_lib.php';

include_once '../xhprof_lib/utils/xhprof_runs.php';
$xhprof_runs = new XHProfRuns_Default();

$xhprof_source = 'xhprof_test';

$run_id = $xhprof_runs->save_run($xhprof_data, $xhprof_source);

$report_url = 'http://xhprof.rebill.info/index.php?run='.$run_id.'&source='.$xhprof_source;

echo '<br>';

echo 'view the performance report:<a href="'.$report_url.'" target="_blank">'.$report_url.'</a>';

如此一来,会在上面设定的xhprof.output_dir目录里生成名字类似4c236583ef490.xhprof_test的数据文件,可以很方便的通过Web方式浏览效果:
http://xhprof.rebill.info/index.php?run=4c236583ef490&source=xhprof_test

目前显示的是表格形式的显示,点击页面上的[View Full Callgraph],就能看到精美的图片显示了。

在线测试体验地址:http://xhprof.rebill.info/test.php

PHP 相关文章推荐
使用php+xslt在windows平台上
Oct 09 PHP
一个用php实现的获取URL信息的类
Jan 02 PHP
php 字符过滤类,用于过滤各类用户输入的数据
May 27 PHP
php入门学习知识点五 关于php数组的几个基本操作
Jul 14 PHP
php中CI操作多个数据库的代码
Jul 05 PHP
php中引用符号(&amp;)的使用详解
Nov 13 PHP
php简单防盗链实现方法
Jul 29 PHP
为你总结一些php系统类函数
Oct 21 PHP
php禁用cookie后session设置方法分析
Oct 19 PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 PHP
php JWT在web端中的使用方法教程
Sep 06 PHP
php使用pecl方式安装扩展操作示例
Aug 12 PHP
PHP CURL 多线程操作代码实例
May 13 #PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 #PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
May 13 #PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
May 13 #PHP
PHP版本如何选择?应该使用哪个版本?
May 13 #PHP
PHP Hash算法:Times33算法代码实例
May 13 #PHP
你应该知道PHP浮点数知识
May 13 #PHP
You might like
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
php中的ini配置原理详解
2014/10/14 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
php生成验证码函数
2015/10/20 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
js点击选择文本的方法
2015/02/09 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
Python+django实现文件上传
2016/01/17 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
python基于property()函数定义属性
2020/01/22 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
python编写扎金花小程序的实例代码
2021/02/23 Python
html5录音功能实战示例
2019/03/25 HTML / CSS
美国牛仔品牌:True Religion
2018/11/16 全球购物
什么是serialVersionUID
2016/03/04 面试题
.NET面试题:什么是反射
2016/09/30 面试题
家长对老师的感言
2014/03/11 职场文书
中学生英语演讲稿
2014/04/26 职场文书
出国留学单位推荐信
2015/03/26 职场文书
亲戚关系证明
2015/06/24 职场文书
Java使用jmeter进行压力测试
2021/07/09 Java/Android
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers