2012-05-05 70 views
1

我试图做脚本,检查站点是否启动或关闭。一切工作正常,但当网站不是一个网站,我的意思是该网站不存在。然后php执行加载时间增加。我想以某种方式处理这个问题。如何检查网站是否存在并打破卷曲会话?这里是我的脚本:PHP:如何处理卷曲响应

<?php 
$ch = curl_init('http://86.100.69.228/'); // e.g. for this will increase execution time because the site doesn't exists 
curl_setopt($ch, CURLOPT_NOBODY, true); 
curl_exec($ch); 
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
echo $status_code; 
curl_close($ch); 
?> 

回答

1

您可以通过在curl_setopt设置卷曲转移CURLOPT_CONNECTTIMEOUT和CURLOPT_TIMEOUT选项定义超时。如果网站停工,cURL将停止工作,您会收到它!

1

如果你想检查一个网站是否关闭CURL可能不是最好的选择,因为你没有检查完整的URL,如http://eample.com/abx.phpx ......当你使用的服务,如“安全的DNS”,如Comodo http://www.comodo.com/secure-dns/所有网站将返回200因为请求自动转发验证,所以你总是会装载场与IP地址92.242.144.10Search 92.242.144.10

我的建议是只是简单的ping服务器

function ping($host) 
{ 
    exec(sprintf('ping -n 2 %s', escapeshellarg($host)), $res, $rval); 
    return $rval === 0; 
} 

$result = ping("86.100.69.228"); 

出检查socke牛逼直接

function pingSocket($host, $port = 80, $timeout = 3) { 
    $fsock = fsockopen ($host, $port, $errno, $errstr, $timeout); 
    if (! $fsock) { 
     return FALSE; 
    } else { 
     return TRUE; 
    } 
} 

$result = pingSocket ("86.100.69.228"); 

这更好的工作大部分时间