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 正则表达式的学习探讨
Jun 06 PHP
新手菜鸟必读:session与cookie的区别
Aug 22 PHP
php缩小png图片不损失透明色的解决方法
Dec 25 PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 PHP
Zend Framework基本页面布局分析
Mar 19 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
Jun 12 PHP
Laravel中任务调度console使用方法小结
May 07 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
Oct 25 PHP
PHP操作Redis常用技巧总结
Apr 24 PHP
Laravel 在views中加载公共页面的实现代码
Oct 22 PHP
PHP isset empty函数相关面试题及解析
Dec 11 PHP
PHP实现rar解压读取扩展包小结
Jun 03 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
php对大文件进行读取操作的实现代码
2013/01/23 PHP
php常用的url处理函数总结
2014/11/19 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
javascript+xml技术实现分页浏览
2008/07/27 Javascript
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
关于angularJs清除浏览器缓存的方法
2017/11/28 Javascript
js阻止默认右键的下拉菜单方法
2018/01/02 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
python正则表达式面试题解答
2020/04/28 Python
Numpy数据类型转换astype,dtype的方法
2018/06/09 Python
Python版名片管理系统
2018/11/30 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
Python 字符串池化的前提
2020/07/03 Python
Python如何读写二进制数组数据
2020/08/01 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
腾讯公司的一个sql题
2013/01/22 面试题
索桥的故事教学反思
2014/02/06 职场文书
上海世博会口号
2014/06/19 职场文书
优秀教师先进个人事迹材料
2014/08/31 职场文书
旷工辞退通知书
2015/04/17 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技