2012-09-23 3 views
0

프록시와 함께 다중 cURL을 사용하고 싶지만 각 프록시 연결이 성공했는지 확인하는 방법을 알아낼 수 없습니다. 정상적인 단일 cURL을 사용하면 curl_errno가 0이 아닌만큼 길게 실행되는 간단한 루프를 만듭니다.PHP - curl_multi 프록시 연결에 성공했는지 확인하는 방법

그러나 다중 cURL로 만드는 방법은 무엇입니까?

감사합니다. 당신이

간단한 프록시 멀티 컬 검사기에 쿼리를 실행하기 전에

답변

5

당신은 간단한 프록시 검사기를 가질 수

function __proxyChecker($proxy) 
{ 
    $ch = curl_init("http://google.com"); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); 
    curl_setopt($ch, CURLOPT_PROXY, $proxy); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    $handle = curl_exec($ch); 
    curl_close($ch); 
    return $handle ; 
} 

사용

$proxies = "211.136.10.29:80 
88.146.161.215:3128 
211.136.10.29:80 
61.35.0.39:6515 
77.78.197.15:8080 
211.161.152.106:80"; 

$proxies = explode("\n", $proxies); 
//shuffle($proxies); 
$url = "http://google.com"; 
$handle = curl_init($url); 
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); 

echo "<pre>"; 
foreach ($proxies as $proxy) { 
    $proxy = trim($proxy); 
    if(empty($proxy)) 
     continue ; 

    if(__proxyChecker($proxy)) 
     echo $proxy , " - ok \n"; 
    else 
     echo $proxy , " - bad \n"; 
} 

출력

211.136.10.29:80 - ok 
88.146.161.215:3128 - ok 
211.136.10.29:80 - ok 
61.35.0.39:6515 - bad 
77.78.197.15:8080 - bad 
211.161.152.106:80 - ok 
+0

안녕 , 당신의 제안에 감사드립니다. 문제는 점검에 오류가 없지만 갑자기 다중 컬 연결에 오류가있을 수 있다는 것입니다. 행복하게 curl_multi_exec()의 문서에 해결책이 있습니다 : http://php.net/manual/en/function.curl-multi-exec.php – Crayl

+1

여기에 일반적인 다중 컬 예제가 있습니다. http : // stackoverflow .com/a/10036599/1226894 – Baba

관련 문제