Подскажите как проверить рабочий ли прокси для дальнейшего использования для парсинга сайтов через CURL.
В интернете поискав различные примеры составил свою функцию
function preg_work_proxy($arr_proxy){
if(empty($arr_proxy)) return false;
$proxy_work=array(); $proxy_broken=array();
$multi=curl_multi_init();
foreach($arr_proxy as $proxy){
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"http://google.com");
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
curl_setopt($ch,CURLOPT_TIMEOUT,10);
curl_setopt($ch,CURLOPT_PROXY,$proxy);
curl_setopt($ch,CURLOPT_PROXYTYPE, 0);
curl_multi_add_handle($multi,$ch);
$channels[$proxy]=$ch;
}
$active=NULL; 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(100); do{ $mrc=curl_multi_exec($multi,$active); } while($mrc==CURLM_CALL_MULTI_PERFORM); }
foreach($channels as $proxy=>$channel){
$done=curl_multi_info_read($multi);
$info=curl_getinfo($done['handle']);
echo_var_dump($info);
if($info['http_code']==301) $proxy_work[]=$proxy; else $proxy_broken[]=$proxy;
curl_multi_remove_handle($multi,$done['handle']);
}
curl_multi_close($multi);
return array('proxy_work'=>$proxy_work,'proxy_broken'=>$proxy_broken);
}
в ответе содержатся и рабочие и не рабочие прокси, но как только я использую сразу рабочие для парсера то они уже не дают результата, то есть ли проверка не верна, либо я что то не правильно делаю, подскажите что не так?