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
php设计模式 Visitor 访问者模式
Jun 28 PHP
php中利用str_pad函数生成数字递增形式的产品编号
Sep 30 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
Dec 16 PHP
PHP实现的构造sql语句类实例
Feb 03 PHP
php基于PDO连接MSSQL示例DEMO
Jul 13 PHP
PHP获取指定日期是星期几的实现方法
Nov 30 PHP
php中static 静态变量和普通变量的区别
Dec 01 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
PHP观察者模式原理与简单实现方法示例
Aug 25 PHP
PHP命名空间定义与用法实例分析
Aug 14 PHP
php实现根据身份证获取精准年龄
Feb 26 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
html中select语句读取mysql表中内容
2006/10/09 PHP
php 运行效率总结(提示程序速度)
2009/11/26 PHP
浅谈php的优缺点
2015/07/14 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
JS 表单验证大全
2011/11/23 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
javascript的this关键字详解
2019/05/20 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
python3下pygame如何实现显示中文
2020/01/11 Python
python -v 报错问题的解决方法
2020/09/15 Python
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
电大物流学生的自我评价
2013/10/25 职场文书
谢师宴答谢词
2015/01/05 职场文书
中国世界遗产导游词
2015/02/13 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
房屋所有权证明
2015/06/19 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
Python 多线程处理任务实例
2021/11/07 Python
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js