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中通过smtp发邮件的类,测试通过
Jan 22 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
Nov 14 PHP
php5.3 废弃函数小结
May 16 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
php中require和require_once的区别说明
Feb 27 PHP
php从完整文件路径中分离文件目录和文件名的方法
Mar 13 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
Mar 19 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
PHP闭包函数详解
Feb 13 PHP
PHP实现添加购物车功能
Mar 06 PHP
thinkphp框架类库扩展操作示例
Nov 26 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相关资料
2006/10/09 PHP
php cache类代码(php数据缓存类)
2010/04/15 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
js实现简单分页导航栏效果
2019/06/28 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
Python中for循环控制语句用法实例
2015/06/02 Python
Django中处理出错页面的方法
2015/07/15 Python
Python编程实现的简单Web服务器示例
2017/06/22 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
python实现彩票系统
2020/06/28 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
HTML5验证以及日期显示的实现详解
2013/07/05 HTML / CSS
对教师的评语
2014/04/28 职场文书
如何书写邀请函?
2019/06/24 职场文书
vue3中provide && inject的使用
2021/07/01 Vue.js
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL