使用 tideways_xhprof + xhgui 分析 PHP 执行情况
前期准备
安装 tideways 扩展
详情见 github.com/tideways/php-xhprof-ext...
生成 PHP 执行情况数据是依赖这个扩展拉取 xhgui 项目,主要展示上面产生的数据
github.com/perftools/xhgui
这个项目依赖 mongodb ,所以还需要安装 mongodb 和对应的 php 扩展
配置
有两种配置方法,直接使用 xhgui 的 header.php 文件比较简单,配置使用不用修改代码,但是 cli 模式的代码不能使用这种方法
可以直接引入 xhgui 的 header 文件
在 nginx 或 apache 配置中加入auto_prepend_file=/var/www/xhgui/external/header.php
引入后直接访问目标 url ,然后查看 xhgui 即可
手动配置
在需要分析的代码前添加
tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_CPU | TIDEWAYS_XHPROF_FLAGS_MEMORY | TIDEWAYS_XHPROF_FLAGS_NO_BUILTINS);
文档上是不使用参数的,不使用参数的分析数据中只有 ct wt 数据,没有内存情况,xhgui 显示的时候会报错,所以需要添加对应的参数配置
在执行代码后添加
$xhprofData['profile'] = tideways_xhprof_disable(); $time = time(); $requestTs = array('sec' => $time, 'usec' => 0); $requestTsMicro = array('sec' => 0, 'usec' => 0); $xhprofData['meta'] = array( 'url' => "", 'SERVER' => $_SERVER, 'get' => $_GET, 'env' => $_ENV, 'simple_url' => "", 'request_ts' => $requestTs, 'request_ts_micro' => $requestTsMicro, 'request_date' => date('Y-m-d', $time), ); file_put_contents( './myapplication.json', json_encode($xhprofData)."\r\n", FILE_APPEND );
按行写入分析数据。
因为要导入到 xhgui 中,所以需要按照 xhgui 的数据格式来导入数据,不然 xhgui 无法正常显示,上面这个格式是 xhgui 格式来拼装的数据
将上面生成的 json 文件导入到 xhgui 数据库中
通过执行 xhgui 的 import.php 来进行导入即可,执行导入之前需要配置 xhgui 的 mongo
php /var/www/xhgui/external/import.php -f ./myapplication.xhprof
现在就可以去 xhgui 查看数据了
本作品采用《CC 协议》,转载必须注明作者和本文链接