0

プロキシで multi-cURL を使用したいのですが、各プロキシ接続が成功したかどうかを確認する方法がわかりません。通常の単一の cURL を使用して、curl_errno が 0 でない限り実行される単純なループを作成します。

しかし、multi-cURL で作成するにはどうすればよいでしょうか。

ありがとう!

4

1 に答える 1

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 
于 2012-09-24T00:35:47.577 に答える