php7中使用xhprof解析-PHP7

资源魔 30 0

开篇语

这是篇纯文档,假如当前有需求能够随时查找, 应用 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:

  1. XHPROF_FLAGS_MEMORY 统计内存占用

  2. XHPROF_FLAGS_CPU 统计cpu占用

  3. 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.PeakMemUseIncl.MemUse的峰值
Excl.PeakMemUseExcl.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开发自学

抱歉,评论功能暂时关闭!