[英]Newrelic isn't recognizing my Slim PHP routes
它花了我一些搜索,但我能找到一個與CodeIgniter相關的答案( 可在此處獲得 )。
一點修改使它適用於我(使用Slim),我想其他PHP路由器和框架將具有大致相同的解決方案:
if (extension_loaded ('newrelic')) {
newrelic_name_transaction($_SERVER['REQUEST_URI']);
}
編輯:為避免包含任何GET參數,請在第二行使用此參數:
newrelic_name_transaction(current(explode('?', $_SERVER['REQUEST_URI'])))
注意:如果您使用Slim,艾默生的答案,他建議使用路由模式,是比使用文字URL更好的選擇。
您可以使用掛鈎將事務名稱設置為路由器的名稱或模式。
以下是將其設置為模式的示例:
$app->hook('slim.before.dispatch', function() use ($app) {
newrelic_name_transaction($app->router()->getCurrentRoute()->getPattern());
});
從PHP Agent的6.7.0.174版本開始,New Relic現在對Slim Framework提供了開箱即用的支持。
我更新到NewRelic代理6.9.0.182,但事務仍未命名,所以我放了一個中間件(因為Slim 3不再支持hook),而且它更好用:
$app = new \Slim\App(['settings' => [
// to be able access to route within middleware
'determineRouteBeforeAppMiddleware' => true,
]]);
// middleware to send the correct route to NewRelic
$app->add(function ($request, $response, $next) {
if (extension_loaded('newrelic') && $request->getAttribute('route')) {
newrelic_name_transaction($request->getAttribute('route')->getPattern());
}
return $next($request, $response);
});
// loads some routes
$app->run();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.