我正在搜索Guzzle 6中的请求总时间,就在一个简单的GET请求之后:
$client = new GuzzleHttp\Client();
$response = client->get('http://www.google.com/');
但在文档中找不到任何相关内容。有什么想法吗?
非常感谢。
答案 0 :(得分:15)
在Guzzle 6.1.0中您可以使用'on_stats'请求选项来获取传输时间等。
找到更多信息答案 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也可以帮到你。
这适用于同步和异步请求。