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服务器实现多session并发运行
Oct 09 PHP
UCenter Home二次开发指南
May 28 PHP
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
php中在PDO中使用事务(Transaction)
May 14 PHP
关于PHP递归算法和应用方法介绍
Apr 15 PHP
php include和require的区别深入解析
Jun 17 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 PHP
PHP正则提取不包含指定网址的图片地址的例子
Apr 21 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
Nov 09 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
Jun 17 PHP
php屏蔽错误及提示的方法
May 10 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
什么是短波收听SWL
2021/03/01 无线电
php tp验证表单与自动填充函数代码
2012/02/22 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
extjs fckeditor集成代码
2009/05/10 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
微信小程序自定义弹出层效果
2020/05/26 Javascript
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
Python 命令行参数sys.argv
2008/09/06 Python
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
python内置进制转换函数的操作
2021/06/02 Python
Java Spring读取和存储详细操作
2022/08/05 Java/Android