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的类树(支持无限分类)
Oct 09 PHP
如何删除多级目录
Oct 09 PHP
PHP PDO函数库详解
Apr 27 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
Jun 19 PHP
php防注入及开发安全详细解析
Aug 09 PHP
实例介绍PHP的Reflection反射机制
Aug 05 PHP
php将图片保存入mysql数据库失败的解决方法
Dec 27 PHP
php使用curl简单抓取远程url的方法
Mar 13 PHP
php中删除、清空session的方式总结
Oct 09 PHP
php常用图片处理类
Mar 16 PHP
php图片合成方法(多张图片合成一张)
Nov 25 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 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与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
js window.onload 加载多个函数的方法
2009/11/02 Javascript
js 表格隔行颜色
2009/12/02 Javascript
jQuery 性能优化手册 推荐
2010/02/23 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
vue中动态添加class类名的方法
2018/09/05 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
python中的reduce内建函数使用方法指南
2014/08/31 Python
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
Python PO设计模式的具体使用
2019/08/16 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
商得四方公司面试题(gid+)
2014/04/30 面试题
美术专业学生个人自我评价
2013/09/19 职场文书
活动总结书
2014/05/08 职场文书
公司踏青活动方案
2014/08/16 职场文书
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python