Newrelic没有认识到我的Slim PHP路由

Bri*_*ian 7 php frameworks url-rewriting slim newrelic

我刚刚在我的PHP Web应用程序上设置了New Relic.除了一件事之外,一切都很好......所有的交易都显示为"index.php".

这样做的原因是因为我使用了超薄框架(也 很多 的替代品 用于 路由)与URL重写,这样我就可以有很好的人力网址,如"/用户/设置",而不对每个控制器和动作的文件夹.

但这仍然是我index.php每个New Relic网络交易的名称.

Bri*_*ian 8

它花了我一些搜索,但我能找到一个与CodeIgniter相关的答案(可在此处获得).

一点修改使它适用于我(使用Slim),我想其他PHP路由器和框架将具有大致相同的解决方案:

if (extension_loaded ('newrelic')) {
    newrelic_name_transaction($_SERVER['REQUEST_URI']);
}
Run Code Online (Sandbox Code Playgroud)

编辑:为避免包含任何GET参数,请在第二行使用此参数:

newrelic_name_transaction(current(explode('?', $_SERVER['REQUEST_URI'])))
Run Code Online (Sandbox Code Playgroud)

注意:如果您使用Slim,艾默生的答案,他建议使用路由模式,是比使用文字URL更好的选择.


Bra*_*son 8

您可以使用挂钩将事务名称设置为路由器的名称或模式.

以下是将其设置为模式的示例:

$app->hook('slim.before.dispatch', function() use ($app) {
    newrelic_name_transaction($app->router()->getCurrentRoute()->getPattern());
});
Run Code Online (Sandbox Code Playgroud)