Im строит функцию проверки ссылок, которая проверяет, имеет ли ссылка код 200/301/302.Проверка связи с помощью Multi-Curl
Я хочу проверить около 1000 ссылок, поэтому я использовал функцию Multi-CURL, и я получаю все заголовки, коды, URL-адрес, на который перенаправлен URL-адрес.
Проблема заключается в том, что Multi-CURL выполняет параллельное добавление всех URL-адресов curl_multi_add_handle и возвращает полученные результаты и игнорирует остальные.
Я знаю из заголовка, результат которого я вернул, но я не знаю, какой URL-адрес привел его. Есть ли идентификатор, который URL-адрес я запросил у конкретного обработанного дескриптора (может быть, это связано с curl_multi_info_read)?
Вот мой код:
$curls = $listofurls;
$curl_arr = array();
$master = curl_multi_init();
for($i = 0; $i < $node_count; $i++) {
$curl_arr[$i] = curl_init($curls[$i][0]);
curl_setopt($curl_arr[$i],CURLOPT_FRESH_CONNECT,true);
curl_setopt($curl_arr[$i],CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($curl_arr[$i],CURLOPT_HEADER,true);
curl_setopt($curl_arr[$i],CURLOPT_CUSTOMREQUEST,'HEAD');
curl_setopt($curl_arr[$i],CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl_arr[$i],CURLOPT_NOBODY,true);
curl_setopt($curl_arr[$i],CURLOPT_AUTOREFERER, 1);
curl_setopt($curl_arr[$i],CURLOPT_TIMEOUT,30);
curl_multi_add_handle($master, $curl_arr[$i]);
}
$finalresult = array();
do{
curl_multi_exec($master, $running);
$info = curl_multi_info_read($master);
if($info['handle']) {
$finalresult[] = curl_multi_getcontent($info['handle']);
curl_multi_remove_handle($master, $info['handle']);
}
$previousActive = $running;
}
while($running > 0);
curl_multi_close($master);
Цените Help.Thanx.
Благодарим за сообщение об этом ответе. У меня была такая же проблема, как выяснить порядок. – Shawn