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分页函数代码(简单实用型)
Dec 02 PHP
php 定界符格式引起的错误
May 24 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
php实现图片添加描边字和马赛克的方法
Dec 10 PHP
php阿拉伯数字转中文人民币大写
Dec 21 PHP
PHP中CheckBox多选框上传失败的代码写法
Feb 13 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 PHP
Laravel5.1 框架表单验证操作实例详解
Jan 07 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
May 02 PHP
Nginx+php配置文件及原理解析
Dec 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
PHPMailer 中文使用说明小结
2010/01/22 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
新浪中用来显示flash的函数
2007/04/02 Javascript
javascript CSS画图之基础篇
2009/07/29 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
JavaScript的原型继承详解
2015/02/15 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
详解Document.Cookie
2015/12/25 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python3生成随机数实例
2014/10/20 Python
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
深入理解python多进程编程
2016/06/12 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
基于python实现地址和经纬度转换
2020/05/19 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
给女朋友的道歉信
2014/01/10 职场文书
社区母亲节活动总结
2015/02/10 职场文书
党员个人承诺书
2015/04/27 职场文书
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript