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 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
分享PHP入门的学习方法
Jan 02 PHP
PHP 图片上传实现代码 带详细注释
Apr 29 PHP
destoon实现商铺管理主页设置增加新菜单的方法
Jun 26 PHP
PHP中使用GD库创建圆形饼图的例子
Nov 19 PHP
php的mssql数据库连接类实例
Nov 28 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
Jun 09 PHP
Phpstorm+Xdebug断点调试PHP的方法
May 14 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
Sep 15 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
数字转英文
2006/12/06 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
JS实现self的resend
2010/07/22 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
JavaScript实现星级评分
2017/01/12 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
vue获取当前激活路由的方法
2018/03/17 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
python实现简单温度转换的方法
2015/03/13 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
简单解决Python文件中文编码问题
2015/11/22 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
Python中整数的缓存机制讲解
2019/02/16 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
JVM是一个编译程序还是解释程序
2012/09/11 面试题
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL