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 相关文章推荐
对squid中refresh_pattern的一些理解和建议
Apr 17 PHP
php中关于普通表单多文件上传的处理方法
Mar 25 PHP
php header Content-Type类型小结
Jul 03 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
Oct 27 PHP
PHP删除数组中的特定元素的代码
Jun 28 PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
php操作xml入门之xml标签的属性分析
Jan 23 PHP
php猜单词游戏
Sep 29 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
Oct 09 PHP
php实现将二维关联数组转换成字符串的方法详解
Jul 31 PHP
PhpSpreadsheet设置单元格常用操作汇总
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的无限分类实现想法~
2007/01/02 PHP
PHP 定界符 使用技巧
2009/06/14 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
php中return的用法实例分析
2015/02/28 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
泰国王权免税店官方网站:KingPower
2019/03/11 全球购物
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
入党申请自荐书范文
2014/02/11 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
2014年医务科工作总结
2014/12/18 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
Python中递归以及递归遍历目录详解
2021/10/24 Python