secotrust/route-statistics-bundle

这个Symfony2扩展包允许您分析日志或分析器数据来对路由进行排序。

dev-master 2011-11-01 17:31 UTC

This package is auto-updated.

Last update: 2024-09-09 03:45:38 UTC


README

关于

此扩展包扫描您的日志文件或分析器数据,并显示匹配路由的有序概览。您可以使用此输出来优化路由顺序,以加快匹配速度。

安装

将以下行追加到您的 deps 文件中

[SecotrustRouteStatisticsBundle]
    git=http://github.com/secotrust/SecotrustRouteStatisticsBundle.git
    target=/bundles/Secotrust/Bundle/RouteStatisticsBundle

然后运行 php bin/vendors install 命令。

在自动加载器中注册 Secotrust 命名空间

<?php
// app/autoload.php
$loader->registerNamespaces(array(
    // ...
    'Secotrust'        => __DIR__.'/../vendor/bundles',
    // ...
));

在您的应用程序内核中注册扩展包

<?php
// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        // ...
        new Secotrust\Bundle\RouteStatisticsBundle\SecotrustRouteStatisticsBundle(),
        // ...
    );
    ...
}

使用方法

此扩展包添加了 router:statistics 命令。您可以指定 --format 参数(默认:profiler),它可以是 apachenginxprofilersymfony 或正则表达式,从日志行中提取方法和路径信息。当您不使用 profilersymfony 格式时,您可以可选地指定路径信息前缀,例如 /app_dev.php,它将从提取的路径信息中删除。

输出包含以下信息

  • 匹配次数
  • 路由名称
  • 路由在匹配器类中的位置

为了优化路由,您应尝试将最常用的路由移到顶部。请记住,第一个匹配的路由总是获胜。

示例

php app/console router:statistics
21: _wdt (#11)
 5: _demo (#8)
 4: _configurator_step (#20)
 3: _demo_secured_hello (#6)
 3: _welcome (#1)
 3: _demo_login (#2)
 2: _demo_secured_hello_admin (#7)
 2: _demo_hello (#9)
 1: _configurator_final (#21)
 1: _configurator_home (#19)

当使用 symfony 格式时,命令会查找包含 request.INFO: Matched route 的行。

php app/console router:statistics --format symfony app/logs/dev.log

如果您想分析您的Apache或Nginx日志文件(combined 日志类型),则您的命令应如下所示

php app/console router:statistics --format apache /var/log/apache2/access-prod.log

或者如果您的日志包含前端控制器脚本名称

php app/console router:statistics --format apache --prefix "/app_dev.php" /var/log/apache2/access-dev.log

已知问题

  • 目前输出略有不同,symfony 不总是将匹配的路由记录在应用程序日志中。
  • 当使用Web服务器日志时,方案是未知的。