secotrust / route-statistics-bundle
这个Symfony2扩展包允许您分析日志或分析器数据来对路由进行排序。
dev-master
2011-11-01 17:31 UTC
Requires
- php: >=5.3.2
- symfony/symfony: >=2.0.4
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
),它可以是 apache
、nginx
、profiler
、symfony
或正则表达式,从日志行中提取方法和路径信息。当您不使用 profiler
或 symfony
格式时,您可以可选地指定路径信息前缀,例如 /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服务器日志时,方案是未知的。