Stopwatch Plugin

Install

$ composer require php-http/stopwatch-plugin

Usage

The StopwatchPlugin records the duration of HTTP requests with a Symfony\Component\Stopwatch\Stopwatch instance:

use Http\Discovery\HttpClientDiscovery;
use Http\Client\Common\PluginClient;
use Http\Client\Common\Plugin\StopwatchPlugin;
use Symfony\Component\Stopwatch\Stopwatch;

$stopwatch = new Stopwatch();

$stopwatchPlugin = new StopwatchPlugin($stopwatch);

$pluginClient = new PluginClient(
    HttpClientDiscovery::find(),
    [$stopwatchPlugin]
);

// ...

foreach ($stopwatch->getSections() as $section) {
    foreach ($section->getEvents() as $name => $event) {
        echo sprintf('Request %s took %s ms and used %s bytes of memory', $name, $event->getDuration(), $event->getMemory());
    }
}

Warning

The results of the stop watch will be unreliable when using an asynchronous client. Execution time can be longer than it really was, depending on when the status was checked again, and memory consumption will be mixed up with other code that was executed while waiting for the response.