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 获取一个月第一天与最后一天的代码
May 16 PHP
window+nginx+php环境配置 附配置搭配说明
Dec 29 PHP
php学习之流程控制实现代码
Jun 09 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
Nov 12 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
php字符串分割函数用法实例
Mar 17 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
php实现的一段简单概率相关代码
May 30 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
Mar 04 PHP
yii插入数据库防并发的简单代码
May 27 PHP
PHP批斗大会之缺失的异常详解
Jul 09 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
php合并js请求的例子
2013/11/01 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
javascript innerText和innerHtml应用
2010/01/28 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
JS代码实现根据时间变换页面背景效果
2016/06/16 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
Python pass 语句使用示例
2014/03/11 Python
回调函数的意义以及python实现实例
2017/06/20 Python
python画双y轴图像的示例代码
2019/07/07 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
如何查看python关键字
2021/01/17 Python
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
加入学生会演讲稿
2014/04/24 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
java中重写父类方法加不加@Override详解
2021/06/21 Java/Android
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技