7
votes

NewRelic ne reconnaît pas mes itinéraires PHP mince

Je viens de mettre en place une nouvelle relique sur mon application Web PHP. Tout fonctionne bien sauf une chose ... Toutes les transactions montrent comme suivant "index.php".

La raison de cela parce que j'utilise le Framework Slim (il sont beaucoup Alternatives pour routage ) avec la réécriture d'URL afin que je puisse avoir de belles URL humaines comme "/ utilisateur / paramètres" sans dossier pour chaque contrôleur et action.

Mais cela me laisse toujours avec index.php comme nom pour chaque nouvelle transaction Web de relique.


0 commentaires

4 Réponses :


8
votes

Il m'a fallu des recherches, mais j'ai pu trouver une réponse ( disponible ici ) lié à CodeIdigniter.

Une petite modification a fait fonctionner pour moi (avec mince), et j'imagine que d'autres routeurs et cadres de PHP auront à peu près la même solution: xxx

modifier: pour éviter d'inclure les paramètres d'obtention, utilisez-le sur la deuxième ligne: xxx

note : La réponse de Emerson, où il recommande d'utiliser le modèle de route, est une option bien meilleure que d'utiliser l'URL littérale si vous utilisez Slim.


3 commentaires

Vous voudrez peut-être jeter un coup d'œil à cela: "Vous devriez absolument pas inclure toutes les données spécifiques à la demande dans le nom de la transaction. Ainsi, par exemple, l'utilisation de l'URL de la demande réelle est extrêmement mauvaise." NewRelic.com/docs/php/...


Ils disent que - mais ils n'offrent pas vraiment une alternative


Je pense dans de nombreux cas, l'URL de la demande ne sera pas utile aux personnes. Par exemple, si vous avez un site de commerce électronique avec 10 000 produits, vous voudrez «page de produit» comme une seule action et pas de 10 000 personnes individuelles. Sinon, ce serait difficile d'obtenir beaucoup de l'interface utilisateur déclarante.



8
votes

Vous pouvez utiliser un crochet pour définir le nom de transaction sur le nom ou le motif du routeur.

Voici un exemple le réglant au motif: p>

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


0 commentaires

1
votes

Nouvelle relique propose désormais une prise en charge hors de la boîte pour le Frame-Slim commençant par la version 6.7.0.174 de l'agent PHP.


0 commentaires

0
votes

i Mise à jour à l'agent NewRelic 6.9.0.182, mais les transactions ne sont toujours pas nommées, donc je mets un middleware (puisque Slim 3 ne prend pas en charge le crochet). Cela fonctionne mieux:

$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();


0 commentaires