首页 编程 正文
255

xhprof的使用

  • yiqingpeng
  • 2019-07-12
  • 0
  •  
首先,安装xhprof扩展
xhprof的下载地址:https://pecl.php.net/package/xhprof
专门为php7开发的tideways xhprof: https://github.com/tideways/php-xhprof-extension
(安装过程略)

在php代码中使用xhprof:
<?php
//XHPROF_FLAGS_MEMORY 监控内存
//
XHPROF_FLAGS_CPU 监控CPU
//
XHPROF_FLAGS_NO_BUILTINS  内建函数排除
xhprof_enable(XHPROF_FLAGS_MEMORY|XHPROF_FLAGS_CPU|XHPROF_FLAGS_NO_BUILTINS);

< php code...>

print_r(xhprof_disable()); //结束分析, 并打印分析结果。
?>

上面这种方案打印出来的结果是一个数组,可读性太差。xhprof安装包提供了Web-UI工具进行展示。
将安装包解压,可以看到有两个目录:xhprof_html 和 xhprof_lib,其中xhprof_html目录下是
一个web程序,xhprof_lib是UI工具依赖的类库。
将以上两个目录及里面的文件复制到web_root/xhprof目录下,配置一下httpd.conf, 使其可以被web访问。

接下来就是配置xhprof分析结果临时保存路径:
vim /etc/php.ini 加上配置项
xhprof.output_dir=/tmp/log/xhprof #保证此目录可读写
重启php-fpm.

需要图形方式查看结果的话,还需要安装graphviz: yum install graphviz

同时,php代码也要相应地调整下:
<?php
xhprof_enable(XHPROF_FLAGS_MEMORY|XHPROF_FLAGS_CPU|XHPROF_FLAGS_NO_BUILTINS);

<php code....>

$xhprofData = xhprof_disable();
require '/webroot/xhprof/xhprof_lib/utils/xhprof_lib.php';
require '/webroot/xhprof/xhprof_lib/utils/xhprof_runs.php';
$xhprofRuns = new XHProfRuns_Default();
$runId = $xhprofRuns->save_run($xhprofData, 'xhprof_test');
echo '<!-- http://localhost/xhprof/xhprof_html/index.php?run=' . $runId . '&source=xhprof_test -->';
?>
将生成的url用浏览器打开就可以看到分析数据了。
这种手动注入方式不太友好,可以借助配置auto_prepend_file和auto_append_file达到自动注入的目的。

分析结果中几个字段的含义说明:
  • Function Name: 函数名
  • Calls: 调用次数
  • Incl. Wall Time: 函数运行时间(微秒), 包括子函数
  • IWall%: 函数运行时间占比,包括子函数
  • Excl. Wall Time: 函数运行时间,不包括子函数
  • EWall%: 函数运行时间占比,不包括子函数。


正在加载评论...