Performance Metrics Using Guzzle

In this article we're going to investigate how you can track performance metrics using Guzzle. Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and trivial to integrate with web services.

Introduction

Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and trivial to integrate with web services. It provides a simple interface for building query strings, POST requests, streaming large uploads, streaming large downloads, using HTTP cookies, uploading JSON data, etc.

Installation

To install Guzzle, you can use Composer. Run the following command to install Guzzle:

composer require guzzlehttp/guzzle

Usage

To send a request using Guzzle, you need to create a new Client instance and then use the request method to send the request. Here's an example:

use GuzzleHttp\Client;

$client = new Client();
$response = $client->request('GET', 'https://example.com/posts/1');

echo $response->getBody();

In this example, we're sending a GET request to https://example.com/posts/1 and then printing the response body.

Performance Metrics

Guzzle provides a way to track performance metrics for each request. You can use the on_stats options to get detailed information about the request. Here's an example:

use GuzzleHttp\Client;

$client = new Client([
    'on_stats' => function (\GuzzleHttp\TransferStats $stats) {
        echo $stats->getEffectiveUri() . "\n";
        echo $stats->getTransferTime() . "\n";
        echo $stats->getHandlerStats()['total_time'] . "\n";
    },
]);

$response = $client->request('GET', 'https://example.com/posts/1');

echo $response->getBody();

In this example, we're using the on_stats option to get detailed information about the request. We're printing the effective URI, transfer time, and total time for the request.

Inside the on_stats callback, you can access the following methods to get insight into the request timings.

  • getEffectiveUri(): Returns the effective URI of the request.
  • getTransferTime(): Returns the total time in seconds it took to complete the transfer.
  • getHandlerStats(): Returns an array of statistics from the handler.

Inside the getHandlerStats() method, you can access the following

  • total_time: The total time in seconds it took to complete the transfer.
  • namelookup_time: The time in seconds it took from the start until the name resolving was completed.
  • connect_time: The time in seconds it took from the start until the TCP connect to the remote host was completed.
  • appconnect_time: The time in seconds it took from the start until the SSL handshake was completed.
  • starttransfer_time: The time in seconds it took from the start until the first byte was just about to be transferred.

This is how the app UpChecker tracks performance metrics for each request using Guzzle. You'll get a detailed insight into the request timings and can use this information to optimize your application.

UpChecker

Reliable uptime monitoring and instant alerts for any website downtime.

  • Uptime Monitoring
  • Performance Monitoring
  • SSL Certificate Alerts
  • Domain Monitoring
  • DNS Checker
  • XML Sitemap Monitoring