Использую один и от же код на разных серверах (первый виртуальный, второй выделенный), на первом выдает content_type и http_code, на втором ["content_type"]=> NULL ["http_code"]=> int(0), причем тестировалось на одних и тех же ip (в смысле прокси), на первом выдает ответ, на втором постоянно 0, в чём может быть проблема?
вот функция которую я использую, проверка прокси
function verify_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,'https://www..........');
curl_setopt($ch,CURLOPT_HEADER,FALSE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,FALSE);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($ch,CURLOPT_TIMEOUT,10);
curl_setopt($ch,CURLOPT_PROXY,$proxy);
curl_setopt($ch,CURLOPT_PROXYTYPE,0);
curl_setopt($ch,CURLOPT_MAXREDIRS,1);
curl_multi_add_handle($multi,$ch);
$channels[]=$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(200); do{ $mrc=curl_multi_exec($multi,$active); } while($mrc==CURLM_CALL_MULTI_PERFORM); }
foreach($channels as $channel){
$done=curl_multi_info_read($multi);
$info=curl_getinfo($done['handle']);
$proxy=$info["primary_ip"].':'.$info["primary_port"];
if($info['http_code']==200 && $info['content_type']=='application/json' && $info['redirect_count']==0){
$proxy_work[]=array('proxy'=>$proxy,'time_request'=>$info['total_time']);
}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);
}