2015-09-01 3 views
1

Я синхронизации синхронных запросов, как предложено здесь: guzzle-6-get-request-total-timeжрать 5.3 - Получить длительность запроса для асинхронных запросов

Но у меня также есть бассейн жрать с двумя или более запросов, которые получают пакетной асинхронно. Мне нужно получить продолжительность каждого запроса, который требуется вернуть.

Я уверен, что есть простой способ получить эту информацию, которую я просто просматриваю. Информация находится в основном завитке, я просто не знаю, как добраться до них.

ответ

2

Оказывается, слушая полное событие, можно поймать весь transferinfo:

$client = new \GuzzleHttp\Client(); 
    $guzzleRequests = $this->getGuzzleRequests(); 

    foreach($guzzleRequests as $myRequest) 
    { 
     $myRequest->getEmitter()->on(
      'complete', 
      function (CompleteEvent $e) { 
       var_dump($e->getTransferInfo()); 
       var_dump($e->getTransferInfo()['url']); 
       var_dump($e->getTransferInfo()['total_time']); 
      } 
     ); 
    } 

    // Results is a GuzzleHttp\BatchResults object. 
    $results = Pool::batch($client, $guzzleRequests); 

TransferInfo имеет гораздо больше, но все, что мне было нужно, запрос URL, чтобы определить, какие API был запрашиваются и общее время как продолжительность.