このドキュメントは、PHP フレームワークの開発者やメンテナを対象としています。New Relic のサポートを追加してフレームワークを拡張する方法を提案します。
PHPエージェントは、フレームワークをサポートするために、 フレームワークのコードのどこにWebトランザクションが適切な名前を つけられるかを把握し、クラスや関数の呼び出しなどの情報に基づいて Webトランザクションを命名します。このソリューションは脆弱で、開発者がコードを変更した場合に影響を受けます。New Relic は、フレームワークの開発者に対して、自分が保守しているフレームワークのアウトオブボックスのユーザーエクスペリエンスを向上させるために必要ないくつかのコールを行うことを推奨しています。
ユーザーのために
New Relic 、ウェブトランザクション名と、 New Relicの の JavaScript ヘッダーとフッターを挿入する場所を識別できます。 ただし、エンドユーザーのエクスペリエンスを向上させ、パフォーマンスを高め、コードのメンテナンスを容易にするために、フレームワーク開発者が自らこの作業を行う必要があります。
New Relic のネイティブサポートを追加してユーザーを支援するかどうかは、さまざまなフレームワークの開発者に委ねられています。ほとんどの場合、New Relicのサポートを追加するには、フレームワークのコードのどこかに3つのAPIコールを挿入する必要があります。
用語解説
New Relic のサポートを追加する最善の方法を理解するためには、相互作用の重要なポイントを理解することが役立ちます。
Term | Definition |
---|---|
Web transactions | Web transactions サイトへのアセットリクエスト(またはユーザーヒット)です。 フレームワークでは、これは多くの場合、MVC ディスパッチ メカニズムによって処理されます。 |
Metrics | Metrics タイミング情報を報告する名前付きエンティティです。 New Relicこれらのメトリックを使用して、 APM Summary ページなどのチャートとページを生成します。 たとえば、 New Relicインストゥルメントは、ユーザーがデータを選択または更新するたびにMySQLを呼び出し、 メトリクスにはタイミングデータしか含まれていません。 |
Transaction traces | すべての収集期間中、 New Relicユーザーが定義した閾値を下回る最も遅いウェブトランザクションを記録します。 これはtransaction traceです。 単純なメトリクスよりも詳細な情報が得られます。有効にすると、どの関数が呼び出され、どのくらいの時間がかかったかを正確に示す詳細なコールグラフが含まれます。低速のクエリ文については、呼び出し中のすべてのデータを難読化します。 |
名前トランザクション
ウェブ取引にどのように名前を付けるかは、ユーザー体験の質に影響します。
重要
トランザクション名の末尾に角かっこ[suffix]
を使用しないでください。 New Relicは、名前から角かっこを自動的に削除します。代わりに、必要に応じて括弧(suffix)
またはその他の記号を使用してください。
Examples:
ブログ スタイルのフレームワークがある場合は、ユーザー アクティビティに基づいてさまざまなトランザクションに名前を付けます ( display
、 edit
、 login
など)。
MVC アーキテクチャを使用する場合、適切な命名規則は controller/action
です。トランザクション名にはリクエスト固有のデータを含め ないで ください。たとえば、実際のリクエスト URL を使用すると、 メトリクスのグループ化の問題が発生します。
Platform | Transaction naming example |
---|---|
Drupal 7 | ディスパッチは |
CakePHP 1.3 | CakePHP には、 |
コードを特定のコントローラとアクション(MVCを使用している場合)、またはアクション(MVCを使用していない場合)にルーティングしたいポイントで、以下のようなコードを挿入します。
Controller and action (MVC を使用する場合):
if (extension_loaded ('newrelic')) { newrelic_name_transaction ($controller . '/' . $action);}
Action only (MVC を使用しない):
if (extension_loaded ('newrelic')) { newrelic_name_transaction ($action);}
JavaScriptのヘッダーとフッターの挿入
ページのロードタイミング(リアルユーザーモニタリング(RUM)と呼ばれることもあります)については、JavaScriptのヘッダとフッタを挿入します。これにより、生成されたページに対するエンドユーザーの体験をモニターすることができます。
- 推奨事項: フレームワークにすべてのページ ヘッダーとフッターを生成する中心的な機能がある場合は、ここに JavaScript コードをインストールします。
- テンプレート駆動型のフレームワークでは、ヘッダーやフッターのテンプレートに挿入します。