我正在构建一个链接检查器功能,用于检查链接是否具有代码 200/301/302。
我想检查大约 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。