我怎么知道我的curl代理是否坏了?


How will i know if my curl proxy is down?

在PHP中,我使用curl代理:

CURLOPT_HTTPPROXYTUNNEL, 1,
CURLOPT_PROXY, ''.$current_proxy.'',

和我有一个DB备份代理ip在它,但我想知道我如何检测如果代理已经下降,所以它可以切换变量$current_proxy

您建议如何检测服务器是否关闭?谢谢。

您可以尝试使用fsockopen连接代理,如下所示:

$proxy = '98.255.255.255:8080';
$timeout = 5;
$splited = explode(':',$proxy); // Separate IP and port
if($con = @fsockopen($splited[0], $splited[1], $errorNumber, $errorMessage, $timeout)) 
{
    echo 'Connection successful, PROXY works!';
} else {
    echo $errorNumber . ' ' . $errorMessage;
}

list.txt包含如下内容:

1.2.3.4:2487123.123.123.123:3248

等。PHP代码如下:

$url = "http://www.google.com";
$proxies = file("list.txt");
foreach($proxies as $proxy)
{
    $ch = curl_init($url);
    curl_setopt($ch,CURLOPT_PROXY,$proxy);
    curl_setopt($ch,CURLOPT_HTTPPROXYTUNNEL,$proxy);
    $page = curl_exec($ch);
    curl_close($ch);
    $check = stripos($page,'</html>'); // not pretty :)
        if($check > 0)
        {
            echo $proxy . " Works!";
        }else{
            echo $proxy . " Is Dead!";
        }
}

Curl无法区分代理宕机或页面不存在(或该页面所在的服务器宕机)。这就是为什么你需要自己想出解决办法。至少Haxx AB的Daniel是这么说的