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递归列出所有文件和目录的代码
Sep 10 PHP
php jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
ajax实现无刷新分页(php)
Jul 18 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
Feb 04 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
php自动载入类用法实例分析
Jun 24 PHP
基于CI框架的微信网页授权库示例
Nov 25 PHP
浅谈PHP封装CURL
Mar 06 PHP
PHP7移除的扩展和SAPI
Mar 09 PHP
PHP设计模式(观察者模式)
Jul 07 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利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
python基础教程之缩进介绍
2014/08/29 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
python递归全排列实现方法
2018/08/18 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
pytorch数据预处理错误的解决
2020/02/20 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
python处理写入数据代码讲解
2020/10/22 Python
详解rem 适配布局
2018/10/31 HTML / CSS
英国网上花店:Bunches
2016/11/29 全球购物
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
数据员岗位职责
2013/11/19 职场文书
暑期社会实践方案
2014/02/05 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
教师节晚会主持词
2015/06/30 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis
使用CSS设置滚动条样式
2022/01/18 HTML / CSS
一文搞懂MySQL索引页结构
2022/02/28 MySQL