在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是这么说的