1. 进入php容器的命令行模式,安装xhprof扩展

# 1. 进入扩展文件目录
cd /usr/src/php/ext# 2. 下载xhprof扩展包
# 注释:https://pecl.php.net/get/xhprof-2.3.5.tgz地址从https://pecl.php.net/package/xhprof上获取,选择最新的包复制地址即可(参考图一)
wget https://pecl.php.net/get/xhprof-2.3.5.tgz
# 如果没有wget命令,需先安装 yum install wget 或 apt-get install wget# 3. 解压下载下来的tgz压缩包
tar -zcvf xhprof-2.3.5.tgz# 4. 复制文件夹中的extension到该目录
cp xhprof-2.3.5/extension ./# 5. 将extension重命名为xhprof
mv extension/ xhprof/# 6. 安装该扩展
docker-php-ext-install xhprof# 查看扩展,可以看到已经安装上了
php -v

图一:

2. 开启xhprof扩展

# 1. 进入上一步中的xhprof文件夹,执行make命令
make && make install
# 2. 修改php.ini文件添加扩展,并配置生成的xhprof文件的存放位置
extension = "xhprof.so"
xhprof.output_dir= /usr/local/... # 根据实际情况设定目录,不设置则默认在/tmp下
# 3. 重启php-fpm即可

3. Yii2写法示例

//1. 在web.php中加入以下内容include_once "...你的实际路径.../xhprof-2.3.5/xhprof_lib/utils/xhprof_lib.php";
include_once "...你的实际路径.../xhprof-2.3.5/xhprof_lib/utils/xhprof_runs.php";
if (!function_exists('xhprof_start')) {function xhprof_start() {xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);}
}
if (!function_exists('xhprof_end')) {function xhprof_end($id, $action_id) {$xhprof_data = xhprof_disable();$xhprof_runs = new \XHProfRuns_Default();return $xhprof_runs->save_run($xhprof_data, $id . '-' . $action_id);}
}//2. 在你想要分析的方法内加入以下内容
// 在方法最开始加入下面代码
xhprof_start();
// 在方法结尾加入下面代码,其中$this->id为控制器名,$this->action->id为方法名
$run_id = xhprof_end($this->id, $this->action->id);

4. 配置访问xhprof文件方式

将xhprof-2.3.5文件夹放在nginx可访问的目录下,并配置网站根目录为xhprof-2.3.5下的xhprof_html。

配置好后访问路径为

// 其中$run_id为上一步中的$run_id,
// 自动创建的文件名(位置是在php.ini中设置的xhprof.output_dir= /usr/local/...这个)也会包含这个run_id,
// 其中$source为【$xhprof_runs->save_run($xhprof_data, $id . '-' . $action_id);】中的$id . '-' . $action_id
// 自动创建的文件名(位置是在php.ini中设置的xhprof.output_dir= /usr/local/...这个)也会包含这个$source,http(s)://$domain/index.php?run=$run_id&source=$source// 也可以直接访问
http(s)://$domain/index.php // 会列出所有xhprof文件

5. XHProf报告字段含义

Function Name:方法名称。

Calls:方法被调用的次数。

Calls%:方法调用次数在同级方法总数调用次数中所占的百分比。

Incl.Wall Time(microsec):方法执行花费的时间,包括子方法的执行时间。(单位:微秒)

IWall%:方法执行花费的时间百分比。

Excl. Wall Time(microsec):方法本身执行花费的时间,不包括子方法的执行时间。(单位:微秒)

EWall%:方法本身执行花费的时间百分比。

Incl. CPU(microsecs):方法执行花费的CPU时间,包括子方法的执行时间。(单位:微秒)

ICpu%:方法执行花费的CPU时间百分比。

Excl. CPU(microsec):方法本身执行花费的CPU时间,不包括子方法的执行时间。(单位:微秒)

ECPU%:方法本身执行花费的CPU时间百分比。

Incl.MemUse(bytes):方法执行占用的内存,包括子方法执行占用的内存。(单位:字节)

IMemUse%:方法执行占用的内存百分比。

Excl.MemUse(bytes):方法本身执行占用的内存,不包括子方法执行占用的内存。(单位:字节)

EMemUse%:方法本身执行占用的内存百分比。

Incl.PeakMemUse(bytes):Incl.MemUse峰值。(单位:字节)

IPeakMemUse%:Incl.MemUse峰值百分比。

Excl.PeakMemUse(bytes):Excl.MemUse峰值。单位:(字节)

EPeakMemUse%:Excl.MemUse峰值百分比。

docker安装php xhprof扩展及使用方法相关推荐

  1. 虚拟机中docker安装mysql远程无法访问解决方法

    #docker安装mysql docker pull mysql docker run --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123 -d ...

  2. docker安装mysql远程不能访问,虚拟机中docker安装mysql远程无法访问解决方法

    #docker安装mysql docker pull mysql docker run --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123 -d ...

  3. 群晖Docker 安装Jellyfin提示“操作超时解决方法

    **[问题描述]**安装Docker后,想要布置简单的影音系统,准备安装 jellyfin,我一开始进注册表,双击下载,结果试了好多次,提示操作超时:然后搜索问题,很多都是增加国内镜像,结果-还是不行 ...

  4. docker java -jar_使用Docker安装Java镜像运行jar包方法

    1.下载java镜像,tag为8u111docker pull java:8u111 2.运行docker容器docker run --name trading-server -p 5566:5566 ...

  5. php5安装mysql拓展_PHP7安装mysql的扩展让老版本PHP程序继续服役

    PHP7以后有一些改变,之前碰到mysql_connect()失效的一个小程序,是自己写的,PHP7下出错后就手动修改了,这两天升级本博客的相关内容时,有碰到mysql_connect()连接失败的问 ...

  6. docker 安装mysql8.0并且暴漏外部的连接

    此处是docker安装mysql8.0版本的数据库方法 配置指令 docker run 这里的密码也要改为 MYSQL_ROOT_PASSWORD=123456; CREATE USER 'oyp'@ ...

  7. Docker 安装教程|在线安装、离线安装和脚本文件安装

    在Linux系统上安装Docker有3种方式,分别为在线安装.离线安装以及脚本文件安装,其中最常用也是官方推荐的安装方式就是在线安装.接下来将在 Ubuntu16.04系统上分别针对这3种安装方式进行 ...

  8. centos6 安装xhprof扩展

    首先配置yum源 追加CentOS 6.5的epel及remi源 # rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel ...

  9. linux系统安装xhprof,xhprof扩展安装与使用

    一.xhprof扩展安装步骤 xhprof是PHP的一个扩展,最好也直接安装上graphviz图形绘制工具(用于xhprof分析结果以直观的图形方式显示),废话不多说,直奔正题. 1.安装 PHP5版 ...

最新文章

  1. MediaCodec在Android视频硬解码组件的应用
  2. ActiveMQ中Queue消费者
  3. android onscrolllistener判断到底部,判断RecyclerView是否滑动到底部
  4. uva 11174(排列组合+搜索)
  5. r语言中的或怎么表示什么不同_R经典入门 之 R语言的基本原理与概念 -- 200430
  6. CodeForces 771C Bear and Tree Jumps 树形DP
  7. 桂林理工大学计算机研究调剂,2018年桂林理工大学考研调剂信息
  8. 机器人煮面机创始人_煮面机器人会是未来的「食神」吗?
  9. ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例
  10. 微型计算机原理偏移地址,微机原理及应用复习
  11. 过去25年八大计算机病毒:冲击波和震荡波入选
  12. 小白学VUE——实现抖音时钟(CDN方式)
  13. 系统自动化制作工资条,很简单,还能发送短信息
  14. 产品读书《把时间当朋友》
  15. 网易邮箱发送失败服务器连接失败,网易邮件发送不出去MI:SFQ错误
  16. 编码应该运筹帷幄之中,决胜千里之外
  17. 比 rm -rf /* 还骚的 Linux 19 个装 B 的命令!
  18. Interview with Dustin Kirkland, Ubuntu Core Developer about encryption in Ubuntu
  19. 杭电多校-Loop-(不确定性贪心+线段树)
  20. html 怎么做动态效果图,css如何让图片动起来?

热门文章

  1. python 菜品识别_菜品识别-python
  2. (〇)SpringCloud之SpringCloud是什么
  3. 苹果safari浏览器 button点击不会触发focus事件 如何解决?
  4. unity中awak,start,update之间的关系
  5. 中文的括号和英文的括号区别_小括号、中括号、大括号,英文怎么说?
  6. win10 kms激活
  7. hpc与超级计算机的区别,超级计算和高性能计算(HPC)的综合分析
  8. ElasticSearch经纬度相关查询
  9. 【调剂】东北石油大学计算机科学与技术专业接收调剂
  10. 设置InternetConnect的httpRequest连接数