How do we track request time with Guzzle and Guzzle Bundle?
With confidence I can say that requests are not the fastest part of any application and for “unknown” reasons, one day you will want to check the time it takes and it will spoil your day.
Let’s create a guzzle client, that will be used, to perform request:
use GuzzleHttp\Client;
use GuzzleHttp\TransferStats;
$client = new Client();
And just add on_stats option to the request:
$client->request('GET', 'http://httpbin.org', [
'on_stats' => function (TransferStats $stats) {
// Estimated time the request was being transferred
// $stats->getTransferTime();
}
]);
Your callback will be called by guzzle and useful information will be passed through TransferStats object.
Things become even easier if you’re using Symfony:
Step 1: Install GuzzleBundle
composer require eightpoints/guzzle-bundle
Step 2: Configure client
eight_points_guzzle:
clients:
httpbin:
base_url: "http://httpbin.org"
Step 3: Do a request
$container->get('eight_points_guzzle.client.httpbin')->get('/204');
Step 4: Track request time in Profiler
Guzzle Bundle tracks the time of all requests and shows all the information in a convenient form.
Read more here: https://github.com/8p/EightPointsGuzzleBundle