imhelle/yii2-xhprof-lib

为 Yii Framework 2.x 应用程序提供 XHProf 配置的简单扩展

0.0.11 2018-06-14 13:52 UTC

This package is not auto-updated.

Last update: 2024-09-21 21:29:46 UTC


README

这是一个使用 XHProf 与 Yii Framework 2.x 简单扩展。这是为 Yii Framework 1.x 提供的 yii-xhprof 扩展的更新版本。

与官方 yii2-debug 扩展捆绑的调试面板。

默认情况下,配置在引导过程中启动,并在 PHP 关闭函数中停止。您可以更改此行为并手动启动和停止分析器。

已测试于 Yii Framework v2.0.6+。

Xhprof 安装

(CentOS)

sudo yum install gcc

cd /www/biglion/general/data/lib/vendor/imhelle/yii2-xhprof-lib/lib/
phpize
./configure
make
make test
sudo make install

sudo yum install graphviz

Yii 扩展安装

此扩展可在 packagist.org 上找到,可以通过以下命令使用 composer 安装:

composer require --dev imhelle/yii2-xhprof.

启用分析器的最小配置

return [
    'bootstrap' => [
        'xhprof'
    ],
    'components' => [
        'xhprof' => [
            'class' => 'imhelle\xhprof\XHProfComponent',
            'libPath' => '/full/path/to/xhprof_lib',
            'htmlReportBaseUrl' => 'http://url.to/xhprof_html',
        ],
    ],
];

要使用捆绑的调试面板,请按以下方式更新配置

return [
    'bootstrap' => [
        'debug',
        'xhprof'
    ],
    'components' => [
        'debug' => [
            // ... other debug config options ...
            'panels' => [
                'xhprof' => [
                    'class' => 'imhelle\xhprof\XHProfPanel'
                ]
            ]
        ],
    ],
];

注意: xhprof 应在 preload 部分中的 debug 之后,以便能够忽略对调试模块页面的请求。

所需的 XHProf 文件(库文件 - xhprof_lib 和 UI - xhprof_html)可以在以下 GitHub 仓库 中找到。

组件配置

扩展为 Yii 组件提供以下配置选项

  • enabled - 启用/禁用分析器组件。
  • reportPath - 文件系统路径或路径别名到存储先前的分析器运行的 JSON 文件的目录。默认:@runtime/xhprof
  • maxReportsCount - 要存储的分析报告数量。默认:25
  • autoStart - 标志,用于在应用程序引导过程中自动启动分析器。默认:true
  • autoStop - 标志,用于在 PHP 关闭函数中自动停止分析器。默认:true
  • forceStop - 标志,用于在禁用 autoStop 且分析器被手动启动并仍在运行时强制停止分析器。默认:true
  • triggerGetParam - 用于手动触发分析器启动的 GET 参数名称。默认:无值,分析器在每次请求上运行。
  • showOverlay - 标志,用于在页面中显示覆盖层,包含到报告和当前分析器运行的调用图结果的链接(如果允许)。如果您使用的是捆绑的 yii2-debug 扩展面板,则不需要将此设置为 true。默认:true
  • libPath - 直接文件系统路径或路径别名到包含 xhprof_lib 内容的目录。
  • htmlReportBaseUrl - XHProf UI 内容(xhprof_html)的 URL 路径。默认:/xhprof_html(假设您在文档根目录内具有此文件夹)。
  • flagNoBuiltins - 用于分析器的 XHPROF_FLAGS_NO_BUILTINS 标志的启用/禁用。默认:true
  • flagCpu - 用于分析器的 XHPROF_FLAGS_CPU 标志的启用/禁用。默认:false
  • flagMemory - 用于分析器的 XHPROF_FLAGS_MEMORY 标志的启用/禁用。默认:true
  • ignoredFunctions - 要在分析期间忽略的函数列表。默认为空。注意:此选项不支持 tideways_xhprof 扩展。
  • blacklistedRoutes - 应忽略的路线列表。允许通配符 *,表示“任何字母数字值以及以下之一:/._-”。默认:['debug*'](忽略对调试扩展页面的请求)。

XHProf 类配置

扩展组件使用自开发的简单包装器为 xhprof_enable / xhprof_disable 函数:[XHProf 类](https://github.com/imhelle/yii2-xhprof-lib/blob/HEAD/XHProf.php)。此类提供通过 Facebook 的 XHProf 库开始/停止分析、保存报告和获取报告 URL 的功能。

可用配置选项(适用于 configure 方法,见下面示例)

  • flagNoBuiltins - 用于分析器的 XHPROF_FLAGS_NO_BUILTINS 标志的启用/禁用。默认:true
  • flagCpu - 用于分析器的 XHPROF_FLAGS_CPU 标志的启用/禁用。默认:false
  • flagMemory - 用于分析器的 XHPROF_FLAGS_MEMORY 标志的启用/禁用。默认:true
  • ignoredFunctions - 在分析过程中要忽略的函数列表([xhprof_enable() 函数](https://php.ac.cn/manual/ru/function.xhprof-enable.php))。默认为空。
  • libPath - 到包含 xhprof_lib 内容的目录的文件系统路径。
  • htmlUrlPath - 包含 XHProf UI 内容(xhprof_html)的目录的 URL 路径。
  • runNamespace - 当前分析运行的预定义命名空间值。

所有选项都可以使用设置器进行更改(例如,setFlagCpu(<value>))。有关更多详细信息,请参阅类的源代码。

手动分析

如果您禁用了自动启动(autoStart 选项)或停止(autoStop 选项),则可以将启动/停止分析器的代码放在代码的任何位置,并通过覆盖或调试面板查看报告和调用图结果。

要手动启动,需要编写以下代码

// create and configure instance of XHProf class
\imhelle\xhprof\XHProf::getInstance()->configure(array(
    'flagNoBuiltins' => true,
    'flagCpu' => false,
    'flagMemory' => true,
    'runNamespace' => 'my-cool-namespace',
    'libPath' => '/var/www/html/xhprof/xhprof_lib',
    'htmlUrlPath' => 'http://test.local/xhprof/xhprof_html'
));

// start profiler
\imhelle\xhprof\XHProf::getInstance()->run();

要手动停止,需要编写以下代码

// stop profiler and get URLs to results and callgraph
$urls = \imhelle\xhprof\XHProf::getInstance()->stop();

// Links:
// $urls[\imhelle\xhprof\XHProf::TYPE_REPORT]
// $urls[\imhelle\xhprof\XHProf::TYPE_CALLGRAPH]

注意:如果您使用 XHProf 类(带有或没有此扩展),则所有分析结果都可以在 XHProf UI 页面上找到(它是 xhprof 开发者的默认设置)。

PHP 7 和 XHProf 的说明

如果您想使用 PHP 7 的此扩展,可以使用以下分叉版本的 xhprof 扩展:[rustjason/xhprof](https://github.com/rustjason/xhprof)。此扩展已在 PHP 7.1.11 上进行测试,并从提供的存储库构建。

另一个更好的选择是使用官方移植的 xhprof 扩展,由 [tideways.io](https://tideways.io) 提供 - [tideways/php-xhprof-extension](https://github.com/tideways/php-xhprof-extension)。