PHP性能测试工具xhprof安装与使用方法详解


Posted in PHP onApril 29, 2018

本文实例分析了PHP性能测试工具xhprof安装与使用方法。分享给大家供大家参考,具体如下:

xhprof概述:

XHProf是一个分层PHP性能分析工具。它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况。一个函数的开销,可细分成调用者和被调用者的开销,XHProf数据收集阶段,它记录调用次数的追踪和包容性的指标弧在动态callgraph的一个程序。它独有的数据计算的报告/后处理阶段。在数据收集时,XHProfd通过检测循环来处理递归的函数调用,并通过给递归调用中每个深度的调用一个有用的命名来避开死循环。XHProf分析报告有助于理解被执行的代码的结构,它有一个简单的HTML的用户界面( PHP写成的)。基于浏览器的性能分析用户界面能更容易查看,或是与同行们分享成果。也能绘制调用关系图。

安装与使用:

最近要做网站的性能对比,于是就找一款性能测试工作来玩玩,工具很多,但相比之前还是觉得xhprof的安装和使用相对来说简单点,数据分析也都还可以,下面就说说它的安装和使用。。。

下载xhprof和graphviz

xhprof的话,直接去php官网就可以下载,为了方便可以戳一下 这里

graphviz的话也要下载,主要是显示xhprof性能结果的图形报表,戳这里 这里

编译安装xhprof

cd xhprof-0.9.4/xhprof-0.9.4/extension/
phpize
./configure
make
sudo make install

将生成的xhprof.so文件加到php.ini文件中,然后重启apache了

...
#这里要使用相对路径加载的话首先要看一下extension_dir配置的路径,或者直接写上`.so`文件的绝对能够路径即可。。。
extension=xhprof.so
...
sudo apachectl restart
##测试扩展是否安装成功,有如下输出则ok
php --ri xhprof
...
 xhprof
 xhprof => 0.9.2
 CPU num => 4
...

安装graphviz

cd graphviz-2.38.0/
#后面参数是要确保安装了libphp才行哦【没安装的 brew install linpng 就可】
./configure --with-png=yes
make
sudo make install

测试一下了

在之前下载的xhprof文件夹里面,找到xhprof_html,xhprof_lib、sample三个文件夹,那这三个文件夹放到你可以访问到得地方去,然后通过连接先访问以下http://xxxx/sample/sample.php,在访问以下http://xxxx/xhprof_html/,就会看到有一条记录,点击后就可以看到分析结果页面,通过点击 View Full CallGraph链接到图形报表的页面。

如何使用

假设你现在要看看看自己做的一个网站的首页性能数据,那么你要找到这个网站的首页入口文件,在核心文件加载之前和之后分别加上xhprof的性能测试代码

#开启,具体参数说明可以查看官方文档
xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);
#核心文件的执行
...
require 'index.php'
...
#关闭
$xhprof_data = xhprof_disable();
#这里的路径根据自己的站点来配置
$XHPROF_ROOT = realpath(dirname(__FILE__) .'/');
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof");
#这里打印出本次测试的id,方便到报表列表页面【http://xxxx/xhprof_html/】去通过对应的id找到对应的结果
var_dump($run_id);

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
解读PHP中的垃圾回收机制
Aug 10 PHP
ThinkPHP打水印及设置水印位置的方法
Oct 14 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
PHP自定义函数实现数组比较功能示例
Oct 19 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 PHP
PHP封装的分页类与简单用法示例
Feb 25 PHP
PHP将整数数字转换为罗马数字实例分享
Mar 17 PHP
PHP反射学习入门示例
Jun 14 PHP
PHP如何将图片文件上传到另外一台服务器上
Aug 26 PHP
浅谈Laravel模板实体转义带来的坑
Oct 22 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 #PHP
PHP实现转盘抽奖算法分享
Apr 15 #PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 #PHP
详解php与ethereum客户端交互
Apr 28 #PHP
360搜索引擎自动收录php改写方案
Apr 28 #PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 #PHP
PHP获取文件扩展名的常用方法小结【五种方式】
Apr 27 #PHP
You might like
php中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
2017/12/05 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python实现微信小程序自动回复
2018/09/10 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
python requests使用socks5的例子
2019/07/25 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
python标准库OS模块详解
2020/03/10 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
animation和transition的区别
2020/10/12 HTML / CSS
医药营销专业个人自荐信
2013/09/29 职场文书
求职信结尾怎么写
2014/05/26 职场文书
三年级学生评语大全
2014/12/26 职场文书
作弊检讨书
2015/01/27 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
python tkinter模块的简单使用
2021/04/07 Python
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
2022/04/02 Servers