New Relic は Guzzle HTTP クライアントライブラリのバージョン 3、4、5、6 をサポートしています New Relic PHP エージェントのバージョン 5.4 以上を使用しています。
Guzzle ライブラリでは、シーケンシャルおよびパラレルの両方のリクエストが可能です。このページでは、New Relic UI の Summary page で、それぞれのタイプのリクエストがどのように表示されるかを説明しています。どのコールが最も遅かったかを知るには、個々の外部コールのタイミングを表示する External Services ページ をご覧ください。
連続したリクエスト
このPHPコードは、Guzzleで複数のシーケンシャルなリクエストを行います。
$client = new \GuzzleHttp\Client;$response = $client->get('http://YOUR_SITE.com/api/foo');$client->delete('http://YOUR_SITE.com/api/foo/'.$response->getBody());
このコードは、New RelicのUIに次のように表示されます。
one.newrelic.com > APM & サービス > (アプリを選択) > 概要 > Web トランザクション時間: New Relic UI の Guzzle を使用したシーケンシャル リクエスト。
応答時間は紺色の線で示されています。緑のWeb外部時間は、Guzzleライブラリで費やされた時間を表します。リクエストは順番に行われたため、応答時間はPHP、MySQL、およびWebの外部アクティビティに費やされた合計時間と同じです。
並列リクエスト
このPHPコードは、プロミスの配列をアンラッピングすることで、複数のリクエストを並行して行います。
$client = new \GuzzleHttp\Client;
$promises = [ $client->getAsync('http://YOUR_SITE.com/api/foo'), $client->getAsync('http://YOUR_SITE.com/api/bar'), $client->getAsync('http://YOUR_SITE.com/api/quux'),];
\GuzzleHttp\Promise\unwrap($promises);
このコードは、New RelicのUIに次のように表示されます。
one.newrelic.com > APM & サービス > (アプリを選択) > 概要 > Web トランザクション時間: New Relic UI での Guzzle による並列リクエスト
緑色の web external の時間 は、Guzzle ライブラリに費やされた時間を表しています。リクエストは非同期に実行されたため、 PHP、MySQL、web externalに費やされた合計時間 は、 応答時間よりも大きい 。
銃口とのタイミング 6
以前のバージョンとは異なり、Guzzle 6はリクエストが送信されたときにイベントを生成しません。代わりに、エージェントはリクエストオブジェクトが作成されたときにリクエストのタイミングを開始します。リクエストオブジェクトが作成され、送信前に追加作業が行われた場合、New Relicはリクエストに実際よりも時間がかかったと報告することがあります。
ガズルのサポートを無効にする
ガズルのサポートを無効にするには
newrelic.guzzle.enabled = false
をnewrelic.ini
ファイルに追加します。- Webサーバー (Apache、Nginx、PHP-FPMなど)を再起動します。