平时大家经常用php的curl模块,有时候排查问题无法正确定位超时发生的阶段,这里主要把curl模块中的curl_getinfo函数说一下,发起 curl 请求后的几个关键时间点阶段如下图:
根据上面的这个图 各个阶段的时间点可以用curl_getinfo获取到。
如果使用GuzzleHttp请求,则看下面实例:
$client = new \GuzzleHttp\Client();
$res = $client->post($this->url, [
'form_params' => $formParams,
'headers' => $headers,
'timeout' => $this->timeout,
'connect_timeout' => $this->connectionTimeout,
'http_errors' => true,
'debug' => $this->debug,
// TransferStats 注意这个
'on_stats' => $this->debug ? function (TransferStats $stats) {
print_r($stats->getHandlerStats());
} : null,
]);
具体每个时间段的参数代表的具体含义,大家自行参考文档。