Guzzle 6 - 获取请求总时间

时间:2015-07-10 12:50:48

标签: php curl guzzle guzzle6

我正在搜索Guzzle 6中的请求总时间,就在一个简单的GET请求之后:

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

但在文档中找不到任何相关内容。有什么想法吗?

非常感谢。

5 个答案:

答案 0 :(得分:15)

在Guzzle 6.1.0中您可以使用'on_stats'请求选项来获取传输时间等。

可在Request Options - on_stats

找到更多信息

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

答案 1 :(得分:1)

$client = new GuzzleHttp\Client();
$one = microtime(1);
$response = $client->get('http://www.google.com/');
$two = microtime(1);
echo 'Total Request time: '. ( $two - $one );

答案 2 :(得分:1)

您可以使用setter和getter。

   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());

答案 3 :(得分:0)

基于@Michael帖子的具体示例。

$client = new GuzzleHttp\Client();

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

答案 4 :(得分:-1)

虽然它仍然是Guzzle 5.3,但我遇到了类似的问题。

请参阅Guzzle 5.3 - Get request duration for asynchronous requests

也许在Guzzle6中收听一个事件并检索TransferInfo也可以帮到你。

这适用于同步和异步请求。