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实现ping
Oct 09 PHP
PHP 编程的 5个良好习惯
Feb 20 PHP
php mssql 日期出现中文字符的解决方法
Mar 10 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
Nov 30 PHP
PHP分页函数代码(简单实用型)
Dec 02 PHP
PHP文件上传原理简单分析
May 29 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 PHP
PHP-Java-Bridge使用笔记
Sep 22 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
PHP模拟http请求的方法详解
Nov 09 PHP
laravel http 自定义公共验证和响应的方法
Sep 29 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
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
python cookielib 登录人人网的实现代码
2012/12/19 Python
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
Python计算字符宽度的方法
2016/06/14 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
员工培训邀请函
2014/02/02 职场文书
高中英语教学反思
2014/02/04 职场文书
小学开学典礼主持词
2014/03/19 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
村委会换届选举方案
2014/05/03 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
Mysql Show Profile
2021/04/05 MySQL
用python自动生成日历
2021/04/24 Python
数据库之SQL技巧整理案例
2021/07/07 SQL Server