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 相关文章推荐
function.inc.php超越php
Dec 09 PHP
php自动适应范围的分页代码
Aug 05 PHP
PHP采集相关教程之一 CURL函数库
Feb 15 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
php获取当前url地址的方法小结
Jan 10 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 PHP
Laravel框架搜索分页功能示例
Feb 01 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 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
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
js获取提交的字符串的字节数
2009/02/09 Javascript
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
2011/04/24 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
vue 项目引入echarts 添加点击事件操作
2020/09/09 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
Python中的集合类型知识讲解
2015/08/19 Python
儿童学习python的一些小技巧
2018/05/27 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
python递归实现快速排序
2018/08/18 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
python实现的Iou与Giou代码
2020/01/18 Python
使用python计算三角形的斜边例子
2020/04/15 Python
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
注塑工厂厂长岗位职责
2013/12/02 职场文书
《逃家小兔》教学反思
2014/02/23 职场文书
可口可乐广告词
2014/03/20 职场文书
党员民主评议总结
2014/10/20 职场文书
先进教师个人总结
2015/02/11 职场文书
清洁工个人工作总结
2015/03/05 职场文书
大学生团日活动总结
2015/05/06 职场文书
居委会工作总结2015
2015/05/18 职场文书
女方离婚起诉书
2015/05/18 职场文书