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+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
Dec 16 PHP
PHP设计模式之责任链模式的深入解析
Jun 13 PHP
PHP如何利用P3P实现跨域
Aug 24 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
Jun 12 PHP
PHP写日志的实现方法
Nov 05 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
分享十款最出色的PHP安全开发库中文详细介绍
Mar 22 PHP
解决php表单重复提交实现方法
Sep 29 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 20 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 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
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
Vue实现页面添加水印功能
2019/11/09 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
Python中的lstrip()方法使用简介
2015/05/19 Python
机器学习10大经典算法详解
2017/12/07 Python
python 不以科学计数法输出的方法
2018/07/16 Python
python 实现生成均匀分布的点
2019/12/05 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
超市实习总结自我鉴定
2013/09/19 职场文书
实习期自我鉴定
2013/10/11 职场文书
优秀的计算机专业求职信范文
2013/12/27 职场文书
趣味运动会开幕词
2015/01/28 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
Win11软件图标固定到任务栏
2022/04/19 数码科技