php配置 xhprof性能分析工具

一、工具

xhprof是一款性能分析工具,在php开发中可以精确分析到每行代码每个方法所消耗的时间和性能等。

二、安装xhprof

我是在本地使用phpstudy的php7.3.4nts 集成环境,若你要是linux环境可以参考xhprof安装和使用方法
下载方式你可以选择

  1. 官网下载 下载 选择合适你的版本
  2. csdn下载
  3. 我的百度网盘 下载 提取码 i705

下载好后将php_xhprof.dll 文件配置在本地php安装目录\ext 里,然后修改php.ini文件

extension=php_xhprof.dll
xhprof.output_dir="D:\caoxiukang\probject\project\xhprof_log" // 日志文件的目录

此时拓展文件已经装好页面输出phpinfo() 查看
在这里插入图片描述
则为成功。
然后配置xhprof基础文件,下载地址百度网盘 提取码:aydr
你也可以去官网下载 xhprof
下载后我解压到 图一配置的目录下
xhprof目录

三、调试

解压到这里就好了,然后我们在需要分析的代码里配置调试

测试代码
上图中地17 行就是我自己的代码,第19行需要配置xhprof的安装地址,也就是图2解压到的地址。
然后调用这个接口,然后在这个目录下会生成日志文件。
在这里插入图片描述
这个就是生成的日志,日志文件名前面一部分是 xhprof运行编号,后面的getColumnGoods是代码里自己配置的名字。这样子就可以直接查看了。但是不是很直观。需要配置站点。

打开xhprof-0.9.4目录下会发现有xhprof_html 目录,这个目录就是用来将日志文件解析到浏览器上的。
根目录
配置的站点需要将入库文件写成index.php文件。配置好后访问如下

四、表格的方式

在这里插入图片描述
我访问的地址是 http://127.0.0.1:3000/?run=5e97f92ec9c7e&source=getColumnGoods&all=1
run是生产的编号 source 是图三代码里设置的后缀。
下面的部分就是分析出来代码每行运行的结果。

五、图表方式 -graphviz

其实上面的表格查看方式以及很清晰了,也可以选择以图表方式查看
安装 graphviz 百度网盘地址 提取码 e1wh 下载安装到随意地址。
下载好了然后 点击页面上的 [View Full Callgraph]
在这里插入图片描述
排错
1.有的可会出现 Xhprof graphviz Warning: proc_open() [function.proc-open]: CreateProcess failed, error code 错误这时需要去php.ini里将 disable_functions 里的proc_open 方法去掉。
2.如果去掉后还有报错,那就去
xhprof_log\xhprof-0.9.4\xhprof_lib\utils\callgraph_utils.php 的 112行proc_open的方法前面加@ 方法
3.如故还报错,那可能就是graphviz的安装目录有问题,需要改一下。

$process = proc_open($cmd, $descriptorspec, $pipes);
  if (is_resource($process)) {
    fwrite($pipes[0], $dot_script);
    fclose($pipes[0]);
 
    $output = stream_get_contents($pipes[1]);
 
    $err = stream_get_contents($pipes[2]);
    if (!empty($err)) {
      print "failed to execute cmd: \"$cmd\". stderr: `$err'\n";
      exit;
    }
 
    fclose($pipes[2]);
    fclose($pipes[1]);
    proc_close($process);
    return $output;
  }
  print "failed to execute cmd \"$cmd\"";
  exit();
}

将原来这块代码修改如上就可以了。

然后可以打开图表如下。
在这里插入图片描述
啊啊啊,不敢打开看,头皮发麻,赶紧优化代码去。

六、分析

具体每个参数作用根据如下:
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峰值百分比。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值