锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

PHP7 下安装并使用 xhprof 性能分析工具

时间:2023-01-03 05:30:00 ecpu电容

xhprof 的安装

cd ~

git clone https://github.com/longxinH/xhprof

安装 xhprof

cd xhprof/extension/

/opt/php-7.0.14/bin/phpize

./configure --with-php-config=/opt/php-7.0.14/bin/php-config --enable-xhprof

make

make install

出现

Installing shared extensions: /opt/php-7.0.14/lib/php/extensions/no-debug-non-zts-20151012/

代表编译成功

修改 php.ini 文件

/opt/php-7.0.14/bin/php -i | grep php.ini ///命令搜索php.ini文件的位置

在/etc/php.ini增加以下配置

[xhprof]

extension=xhprof.so

xhprof.output_dir=/data/www/xhprof/save_output_dir ///本目录可自由定义,用于保存xhprof源文件的生成

保存后,重启php-fpm

kill -USR2 `cat /opt/php-7.0.14/var/run/php-fpm.pid`

将相关文件移动到项目中

//切换到下载 xhprof 目录

cp -r xhprof/xhprof_html ROOT_PATH/

cp -r xhprof/xhprof_lib ROOT_PATH/

使用

xhprof_enable();

////你需要分析的代码

$xhprof_data = xhprof_disable();

include_once ROOT_PATH.'/xhprof_lib/utils/xhprof_lib.php';

include_once ROOT_PATH . '/xhprof_lib/utils/xhprof_runs.php';

$xhprof_runs = new XHProfRuns_Default();

$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_test");

//将run_id保存或与代码一起输出

查看数据

访问$host_url/xhpfrof_html/index.php?run=58d3b28b521f6&source=xhprof_test来查看结果

图形化结果

点击[View Full Callgraph]可见图形化结果

报错

failed to execute cmd:" dot -Tpng". stderr:sh: dot:command not found。

//解决方案

yum install graphviz

如果输入浏览器没有数据:Run #530707980ee18: Invalid Run Id = 530707980ee18错误结果:

e81f257aeb1992bdbeac239723643086.png可能是你的配置权限不够,请给个权限,可以直接777,然后重新操作这一步看效果。xhprof安装结束了。开始你的性能优化之旅。有了这个工具,你会事半功倍。~~对于xhprof的名词解释:

Function Name 函数名

Calls 调用次数 Calls% 调用百分比 Incl. Wall Time (microsec) 调用包括子函数的所有时间 微秒算(一百万分之一秒) IWall% 调用包括子函数的所有时间的百分比 Excl. Wall Time (microsec) 函数执行本身需要时间,不包括子树的执行时间,以微秒计算(100万分之一秒) EWall% 函数执行本身所花费的时间百分比不包括子树执行时间 Incl. CPU(microsecs) 调用包括子函数的所有费用cpu时间。减Incl. Wall Time即为等待cpu的时间 减Excl. Wall Time即为等待cpu的时间 ICpu% Incl. CPU(microsecs)的百分比 Excl. CPU(microsec) 函数执行本身的费用cpu不包括子树执行时间,微秒算(一百万分之一秒)。 ECPU% Excl. CPU(microsec)的百分比 Incl.MemUse(bytes) 包括使用子函数的内存。 IMemUse% Incl.MemUse(bytes)的百分比 Excl.MemUse(bytes) 函数执行本身的内存,以字节算 EMemUse% Excl.MemUse(bytes)的百分比 Incl.PeakMemUse(bytes) Incl.MemUse的峰值 IPeakMemUse% Incl.PeakMemUse(bytes) 峰值百分比 Excl.PeakMemUse(bytes) Excl.MemUse的峰值 EPeakMemUse% EMemUse% 峰值百分比

错误处理:

failed to execute cmd:" dot -Tpng".stderr:`sh: dot: command not found '

原因:图形化工具未安装

yum install graphviz//centosbrew install graphviz//mac

界面优化:XHProf UI 分支

查看图片

图中的红色部分性能低,耗时长。我们可以根据哪些函数标记为红色来优化系统代码

补充

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峰值百分比。

参考:

http://www.jianshu.com/p/c420ebe6ce39

http://www.php.cn/php-weizijiaocheng-376423.html

https://www.oschina.net/question/1439832_2147576

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章