我正在搜索 Guzzle 6 中的请求总时间,就在一个简单的 GET 请求之后:
$client = new GuzzleHttp\Client();
$response = client->get('http://www.google.com/');
但是在文档中找不到任何关于此的内容。任何想法 ?
非常感谢。
在 Guzzle 6.1.0 中,您可以使用“on_stats”请求选项来获取传输时间等。
更多信息可以在请求选项 - on_stats中找到
您可以使用 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());
$client = new GuzzleHttp\Client();
$one = microtime(1);
$response = $client->get('http://www.google.com/');
$two = microtime(1);
echo 'Total Request time: '. ( $two - $one );
基于@Michael 帖子的具体示例。
$client = new GuzzleHttp\Client();
$response = $client->get('http://www.google.com/', [
'on_stats' => function (\GuzzleHttp\TransferStats $stats) {
echo $stats->getEffectiveUri() . ' : ' . $stats->getTransferTime();
}
]);
尽管它仍然是 Guzzle 5.3,但我遇到了类似的问题。
也许在 Guzzle6 中收听一个事件并检索 TransferInfo 也会为您解决问题。
这适用于同步和异步请求。