New Relic admite las versiones 3, 4, 5, 6 y 7 de Guzzle HTTP client library con el agente PHP de New Relic versión 7.0 o superior.
La biblioteca Guzzle permite solicitudes tanto secuenciales como paralelas. Esta página describe cómo aparecerá cada tipo de solicitud en la páginaSummary en la UI de New Relic. Para descubrir qué llamada fue la más lenta, consulte la página Servicios externos que muestra el tiempo para llamadas externas individuales.
Solicitudes secuenciales
Este código PHP realiza múltiples solicitudes secuenciales con Guzzle:
$client = new \GuzzleHttp\Client;$response = $client->get('http://YOUR_SITE.com/api/foo');$client->delete('http://YOUR_SITE.com/api/foo/'.$response->getBody());
Este código aparecería en la UI de New Relic como:
one.newrelic.com > All capabilities > APM & services > (select an app) > Overview > Web transactions time: Solicitudes secuenciales con Guzzle en la UI de New Relic.
El tiempo de respuesta se muestra como la línea azul oscuro. El verde web external time representa el tiempo pasado en la biblioteca de Guzzle. Debido a que las solicitudes se realizaron de forma secuencial, el tiempo de respuesta es equal del tiempo total dedicado a PHP, MySQL y actividades externas web.
Solicitudes paralelas
Este código PHP realiza múltiples solicitudes en paralelo desenvolviendo una matriz de promesas:
$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);
Este código aparecería en la UI de New Relic como:
one.newrelic.com > All capabilities > APM & services > (select an app) > Summary > Web transactions time: Solicitudes paralelas con Guzzle en la UIde New Relic
El verde web external time representa el tiempo pasado en la biblioteca de Guzzle. Debido a que las solicitudes se realizaron de forma asincrónica, el tiempo total invertido en PHP, MySQL y web externa es greater mayor que el tiempo de respuesta.
Sincronización con Guzzle 6 y 7
A diferencia de las versiones anteriores, Guzzle 6 y 7 no generan un evento cuando se envía una solicitud. En cambio, el agente comienza a cronometrar una solicitud cuando se crea el objeto de solicitud. Si se crea un objeto de solicitud y se realiza trabajo adicional antes de enviarlo, New Relic puede informar que la solicitud tardó más de lo que realmente tardó.
Deshabilitar el soporte de Guzzle
Para desactivar la compatibilidad con Guzzle:
- Agregue
newrelic.guzzle.enabled = false
a su archivonewrelic.ini
. - Reinicie su servidor web (Apache, Nginx, PHP-FPM, etc.).