开篇语
这是篇纯文档,假如当前有需求能够随时查找, 应用 xhprof 进行剖析, 不便代码测试、比照剖析(支持php7).
保举教程:《php教程》
前置构建 docker 虚构测试环境
docker run -it -p 80:80 -v /Users/xxx/Desktop/xhprof:/data phalcon /bin/bash复制代码
1. 装置xhprof
支持php7的xhprof还挺多的, 咱们这里应用 github.com/longxinH/xh… 这个名目。
1.1 拉取名目
git clone https://github.com/longxinH/xhprof.git复制代码
1.2 装置名目
cd xhprof/extension/ /usr/server/php7/bin/phpize ./configure --with-php-config=/usr/server/php7/bin/php-config make && make install复制代码
1.3 增加 xhprof.so 拓展
执行完最初,咱们需求将此 so 文件引入到php.ini设置装备摆设下
查看 php.ini 文件门路
/usr/server/php7/bin/php --ini Configuration File (php.ini) Path: /usr/server/php7/etc Loaded Configuration File: /usr/server/php7/etc/php.ini Scan for additional .ini files in: /usr/server/php7/etc/php Additional .ini files parsed: (none)复制代码
编纂 /usr/server/php7/etc/php.ini
[Xhprof] extension=xhprof.so xhprof.output_dir=/data/logs复制代码
重启 php-fpm 便可。
2. 应用 xhprof
搭建案例进程略
咱们正在要监控的逻辑后面嵌入上面代码
\xhprof_enable(); ......$order = new OrderAdepter();$result = $order->getUserOrderByOrderNo(123); ......$xhprof_data = \xhprof_disable(); print_r($xhprof_data);复制代码
output:
咱们发现挪用了xhprof拓展中的两个函数, 输入值含意
ct 示意 以后这个函数挪用的次数,此案例都是1次 wt 示意 函数执行工夫的耗时,单元为微秒复制代码
看到这里发现, 咱们猎取的信息并非不少, 比方咱们常常还要关怀占用的内存、cpu等目标.
\xhprof_enable( XHPROF_FLAGS_MEMORY +XHPROF_FLAGS_CPU +XHPROF_FLAGS_NO_BUILTINS );复制代码
output:
XHPROF_FLAGS_MEMORY 统计内存占用
XHPROF_FLAGS_CPU 统计cpu占用
XHPROF_FLAGS_NO_BUILTINS 没有统计内置函数, 这次输入能够看到曾经疏忽了咱们拓展中的函数
咱们发现统计内存占用的字段, 有两个输入 mu 以及 pmu , mu 示意应用的内存(bytes), pmu 示意应用的内存峰值(bytes)
3. 图表xhprof
当然,咱们仍是更心愿图表的方式能够更直观的察看功能瓶颈, 上面咱们看下怎样应用.
3.1 这时候候需求咱们用到 xhprof_lib 库
正在咱们下载 xhprof 源码时分,目次中曾经蕴含了
\xhprof_enable(XHPROF_FLAGS_MEMORY + XHPROF_FLAGS_CPU+XHPROF_FLAGS_NO_BUILTINS); ......$order = new OrderAdepter();$result = $order->getUserOrderByOrderNo(123); ......$xhprof_data = \xhprof_disable(); include_once '/data/xhprof-master/xhprof_lib/utils/xhprof_lib.php'; include_once '/data/xhprof-master/xhprof_lib/utils/xhprof_runs.php';$xhprof_runs = new \XHProfRuns_Default();$run_id = $xhprof_runs->save_run($xhprof_data, 'your_project');echo $run_id; //output 5cbf25e21fe9b复制代码
执行打印进去一个字符串, 这个咱们能够了解为文件标识符. 咱们发现执行了 save_run 办法,那保留到那里了呢.
您还记患上咱们正在引入 xhprof.so 拓展时分的另外一个设置装备摆设吗?
没错, 正在 xhprof.output_dir 设置装备摆设的门路下(需求本人手动创立下目次)
感兴味能够关上看看, 外面存了咱们剖析的一些序列化工具信息.
3.2 设置装备摆设一个独自的效劳来拜访咱们的剖析后果
咱们指向咱们xhprof名目中的 xhprof_html 目次
置信你到此明确了 咱们的 run_id 以及 save_run中的project 的作用了
咱们最下面局部是申请的接口目标总览, 上面是详细的每一个挪用函数的执行状况。
字段名 | 含意 |
---|---|
Calls | 挪用次数 |
Incl. Wall Time | 挪用的包罗子函数一切破费工夫,以微秒算 |
Excl. Wall Time | 函数执行自身破费的工夫,没有包罗子树执行工夫,以微秒算 |
Incl. CPU | 挪用的包罗子函数一切破费的cpu工夫 |
Excl. CPU | 函数执行自身破费的cpu工夫,没有包罗子树执行工夫,以微秒算 |
Incl.MemUse | 包罗子函数执利用用的内存, 以字节算 |
Excl.MemUse | 函数执行自身内存,以字节算 |
Incl.PeakMemUse | Incl.MemUse的峰值 |
Excl.PeakMemUse | Excl.MemUse的峰值 |
其他前面的 % 末端均为对应的占比
3.3 [View Full Callgraph]
假如查看挪用流程需求装置 graphviz 图形库. 这里咱们保举手动装置 graphviz 2.24.0 这个版本(亲身踩坑,2.40没有支持)
yum -y install libtool-ltdl-develcd /data/graphviz-2.24.0 ./configure make make install复制代码
白色局部以及黄色局部重点关怀下,假如觉得只想剖析某个流程, 能够点击到某个办法外面再点击【View Full Callgraph】查看图表
4. 成绩点
咱们正在下面应用xhprof的时分发现了强依赖, 正在代码中引入了 xhprof 装置包里的几个类.
include_once '/data/xhprof-master/xhprof_lib/utils/xhprof_lib.php'; include_once '/data/xhprof-master/xhprof_lib/utils/xhprof_runs.php';复制代码
这里咱们能够应用composer包援用来完成相反性能, 这里保举引入 pbweb/xhprof 包。
5. 完结
心愿各人工作开心
以上就是php7中应用xhprof解析的具体内容,更多请存眷资源魔其它相干文章!
标签: php xhprof php7开发教程 php7开发资料 php7开发自学
抱歉,评论功能暂时关闭!