我使用多重卷曲发送请求,并且想知道每个请求的发送时间。我有这样简单的手动功能:
function multirequest($urls) //may be $urls contains 10 urls, or may be 1 000
{
$multi = curl_multi_init();
$handles = [];
$htmls = [];
for($i=0; $i<count($urls);$i++)
{
$ch = curl_init('https://....');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_multi_add_handle($multi, $ch);
array_push($handles, $ch);
}
do {
$mrc = curl_multi_exec($multi, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK)
{
if (curl_multi_select($multi) == -1)
{
usleep(1);
}
do
{
$mrc = curl_multi_exec($multi, $active);
}while($mrc == CURLM_CALL_MULTI_PERFORM);
}
foreach($handles as $channel)
{
$html = curl_multi_getcontent($channel);
$htmls[] = $html;
curl_multi_remove_handle($multi, $channel);
}
curl_multi_close($multi);
return $htmls;
}
我认为,每个人都使用此代码。我知道,可以使用callback
通过microtime()
函数来查找响应时间。但是我不知道如何找到时刻,何时请求开始发送?可以在多重卷曲中设置请求顺序吗?有人可以帮忙吗?谢谢。
UPD
是否可以在多重卷曲中设置请求顺序?我不确定,数组中的第一个$ch
是否真的会首先发送。