使用 tideways_xhprof + xhgui 分析 PHP 执行情况

  • 前期准备

    1. 安装 tideways 扩展
      详情见 github.com/tideways/php-xhprof-ext...
      生成 PHP 执行情况数据是依赖这个扩展

    2. 拉取 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 即可

    • 手动配置

      1. 在需要分析的代码前添加

             tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_CPU | TIDEWAYS_XHPROF_FLAGS_MEMORY | TIDEWAYS_XHPROF_FLAGS_NO_BUILTINS);

        文档上是不使用参数的,不使用参数的分析数据中只有 ct wt 数据,没有内存情况,xhgui 显示的时候会报错,所以需要添加对应的参数配置

      2. 在执行代码后添加

          $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 格式来拼装的数据

      3. 将上面生成的 json 文件导入到 xhgui 数据库中

        通过执行 xhgui 的 import.php 来进行导入即可,执行导入之前需要配置 xhgui 的 mongo

          php /var/www/xhgui/external/import.php -f ./myapplication.xhprof

        现在就可以去 xhgui 查看数据了

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!