Php 我如何知道我的旋度代理是否已关闭?

Php 我如何知道我的旋度代理是否已关闭?,php,curl,proxy,Php,Curl,Proxy,在PHP中,我使用的是带有curl的代理,如下所示: CURLOPT_HTTPPROXYTUNNEL, 1, CURLOPT_PROXY, ''.$current_proxy.'', 我有一个数据库,里面有备份代理ip,但我想知道如何检测代理是否已关闭,以便它可以切换变量$current\u proxy 您建议如何检测服务器是否停机?谢谢。Curl不区分代理服务器是否关闭或页面是否不存在(或此页面所在的服务器是否关闭)。这就是为什么你需要自己发明变通方法。至少来自Haxx AB的Daniel。

在PHP中,我使用的是带有curl的代理,如下所示:

CURLOPT_HTTPPROXYTUNNEL, 1,
CURLOPT_PROXY, ''.$current_proxy.'',
我有一个数据库,里面有备份代理ip,但我想知道如何检测代理是否已关闭,以便它可以切换变量
$current\u proxy


您建议如何检测服务器是否停机?谢谢。

Curl不区分代理服务器是否关闭或页面是否不存在(或此页面所在的服务器是否关闭)。这就是为什么你需要自己发明变通方法。至少来自Haxx AB的Daniel。

list.txt包含以下内容:

1.2.3.4:2487 123.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!";
        }
}
$url=”http://www.google.com";
$proxies=文件(“list.txt”);
foreach($代理作为$代理)
{
$ch=curl\u init($url);
curl_setopt($ch,CURLOPT_PROXY,$PROXY);
curl_setopt($ch,CURLOPT_HTTPPROXYTUNNEL,$proxy);
$page=curl\u exec($ch);
卷曲关闭($ch);
$check=stripos($page',);//不漂亮:)
如果($check>0)
{
echo$proxy.“有效!”;
}否则{
echo$proxy.“已经死了!”;
}
}

您可以尝试通过以下方式连接到代理:

$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;
}

你不能简单地检查一下
curl\u exec()
是否返回
FALSE
,以及它是否尝试使用不同的代理吗?只需搜索一下:@EdoDodo:在一个不存在的页面上尝试了所有代理(包括工作代理)之后,你可能会得出结论,这个方法不起作用。我在执行脚本时遇到了问题。在“@fsockopen”上,无法访问整个主机。