Я использую multi curl для отправки запросов и хочу знать, когда именно каждый запрос отправляется. У меня есть простая функция из руководства, как это:
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()
. Но я не понимаю, как найти момент, когда начнется отправка запроса? Можно ли установить последовательность запросов в multi curl? Может ли кто-нибудь помочь? Спасибо.
UPD
Можно ли установить последовательность запросов в multi curl? Я не уверен, что первый $ch
в массиве будет действительно отправлен первым.