docker安装php xhprof扩展及使用方法
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扩展及使用方法相关推荐
- 虚拟机中docker安装mysql远程无法访问解决方法
#docker安装mysql docker pull mysql docker run --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123 -d ...
- docker安装mysql远程不能访问,虚拟机中docker安装mysql远程无法访问解决方法
#docker安装mysql docker pull mysql docker run --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123 -d ...
- 群晖Docker 安装Jellyfin提示“操作超时解决方法
**[问题描述]**安装Docker后,想要布置简单的影音系统,准备安装 jellyfin,我一开始进注册表,双击下载,结果试了好多次,提示操作超时:然后搜索问题,很多都是增加国内镜像,结果-还是不行 ...
- docker java -jar_使用Docker安装Java镜像运行jar包方法
1.下载java镜像,tag为8u111docker pull java:8u111 2.运行docker容器docker run --name trading-server -p 5566:5566 ...
- php5安装mysql拓展_PHP7安装mysql的扩展让老版本PHP程序继续服役
PHP7以后有一些改变,之前碰到mysql_connect()失效的一个小程序,是自己写的,PHP7下出错后就手动修改了,这两天升级本博客的相关内容时,有碰到mysql_connect()连接失败的问 ...
- docker 安装mysql8.0并且暴漏外部的连接
此处是docker安装mysql8.0版本的数据库方法 配置指令 docker run 这里的密码也要改为 MYSQL_ROOT_PASSWORD=123456; CREATE USER 'oyp'@ ...
- Docker 安装教程|在线安装、离线安装和脚本文件安装
在Linux系统上安装Docker有3种方式,分别为在线安装.离线安装以及脚本文件安装,其中最常用也是官方推荐的安装方式就是在线安装.接下来将在 Ubuntu16.04系统上分别针对这3种安装方式进行 ...
- centos6 安装xhprof扩展
首先配置yum源 追加CentOS 6.5的epel及remi源 # rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel ...
- linux系统安装xhprof,xhprof扩展安装与使用
一.xhprof扩展安装步骤 xhprof是PHP的一个扩展,最好也直接安装上graphviz图形绘制工具(用于xhprof分析结果以直观的图形方式显示),废话不多说,直奔正题. 1.安装 PHP5版 ...
最新文章
- MediaCodec在Android视频硬解码组件的应用
- ActiveMQ中Queue消费者
- android onscrolllistener判断到底部,判断RecyclerView是否滑动到底部
- uva 11174(排列组合+搜索)
- r语言中的或怎么表示什么不同_R经典入门 之 R语言的基本原理与概念 -- 200430
- CodeForces 771C Bear and Tree Jumps 树形DP
- 桂林理工大学计算机研究调剂,2018年桂林理工大学考研调剂信息
- 机器人煮面机创始人_煮面机器人会是未来的「食神」吗?
- ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例
- 微型计算机原理偏移地址,微机原理及应用复习
- 过去25年八大计算机病毒:冲击波和震荡波入选
- 小白学VUE——实现抖音时钟(CDN方式)
- 系统自动化制作工资条,很简单,还能发送短信息
- 产品读书《把时间当朋友》
- 网易邮箱发送失败服务器连接失败,网易邮件发送不出去MI:SFQ错误
- 编码应该运筹帷幄之中,决胜千里之外
- 比 rm -rf /* 还骚的 Linux 19 个装 B 的命令!
- Interview with Dustin Kirkland, Ubuntu Core Developer about encryption in Ubuntu
- 杭电多校-Loop-(不确定性贪心+线段树)
- html 怎么做动态效果图,css如何让图片动起来?
热门文章
- python 菜品识别_菜品识别-python
- (〇)SpringCloud之SpringCloud是什么
- 苹果safari浏览器 button点击不会触发focus事件 如何解决?
- unity中awak,start,update之间的关系
- 中文的括号和英文的括号区别_小括号、中括号、大括号,英文怎么说?
- win10 kms激活
- hpc与超级计算机的区别,超级计算和高性能计算(HPC)的综合分析
- ElasticSearch经纬度相关查询
- 【调剂】东北石油大学计算机科学与技术专业接收调剂
- 设置InternetConnect的httpRequest连接数