Guzzle 6 - Получить общее время запроса

Я пытаюсь получить общее время запроса в Guzzle 6 сразу после простого запроса GET:

$client = new GuzzleHttp\Client();
$response = client->get('http://www.google.com/');

Но ничего не могу найти в документах об этом. Есть идеи ?

Большое спасибо.


person Benoth    schedule 10.07.2015    source источник


Ответы (5)


В Guzzle 6.1.0 вы можете использовать параметр запроса «on_stats», чтобы получить время передачи и т. д.

Дополнительную информацию можно найти на странице Параметры запроса — on_stats.

https://github.com/guzzle/guzzle/releases/tag/6.1.0

person Michael    schedule 18.09.2015

Вы можете использовать сеттер и геттер.

   private $totaltime = 0;

   public function getTotaltime(){
        return $this->totaltime;

    }
    public function setTotaltime($time){
        $this->totaltime = $time;

    }

    $reqtime= new self();
    $response = $client->post($endpointLogin, [
                    'json' => $payload,
                    'headers' => $this->header,
                    'on_stats' => function (TransferStats $stats) use ($reqtime)  {

                      $stats->getTransferTime();

                      //** set it here **//
                      $reqtime->setTotaltime($stats->getTransferTime());

                }

      ]);

       dd($reqtime->getTotaltime());
person CHHUM Sina    schedule 31.07.2020

Конкретный пример, основанный на сообщении @Michael.

$client = new GuzzleHttp\Client();

$response = $client->get('http://www.google.com/', [
    'on_stats' => function (\GuzzleHttp\TransferStats $stats) {
       echo $stats->getEffectiveUri() . ' : ' . $stats->getTransferTime(); 
    }
]);
person Juan Lago    schedule 10.09.2019

У меня была похожая проблема, хотя это все еще Guzzle 5.3.

См. Guzzle 5.3 - Получить продолжительность запроса для асинхронных запросов

Возможно, прослушивание события в Guzzle6 и получение TransferInfo тоже поможет вам.

Это работает как для синхронных, так и для асинхронных запросов.

person Worp    schedule 01.09.2015
comment
Guzzle 6 не использует события. Он использует обещания. В Guzzle 6.1 добавлена ​​встроенная поддержка предоставления доступа к статистике транзакций за счет предоставления вызываемого параметра запроса on_stats. - person Shaun Bramley; 28.09.2015
comment
Ваш ответ содержит неправильную версию Guzzle. Автор темы спрашивал о Guzzle 6+. Вы даете ответ на 5.3. Эти версии Guzzle несовместимы друг с другом. - person mrDinkelman; 04.05.2017
comment
Хотя то, что вы говорите, верно, как я уже сказал в самом начале своего ответа, с этим нет проблем. Хотя это были просто предложения, чтобы увидеть, существует ли подобная концепция в Guzzle 6+ и, поскольку кажется, что это не помогает Техническому обслуживанию, кто-то еще придет с описанием проблемы, но в версии 5.x найдет это полезно. Достаточно сложно найти достоверную информацию о жратве как таковой. Также: этому ответу 1,5 года. Не будем воскрешать мертвых. - person Worp; 04.05.2017

person    schedule
comment
если это работает для вас для одного запроса, просто используйте массив для хранения многих из них, например: $time['start']['google'] = microtime(); сохраните конец в $time['end']['google'] и повторите, когда захотите. - person xpy; 18.09.2015
comment
Вам нужно microtime(true), если вы хотите выполнять вычисления с возвращаемым значением. - person vishalknishad; 31.08.2018