我知道以前可能有人问过这个问题,但是我找不到完全符合我具体要求的产品。
我正在本地Linux服务器上加载页面,当它加载时,我需要知道它运行的服务器是否有互联网接入和DNS解析。
我有这个工作,但是…如果没有互联网连接,页面需要很长时间才能加载,如果有连接,则立即加载。
我正在使用以下命令来检查互联网访问:
$check1 = checkState('google-public-dns-a.google.com',53);
$check2 = checkState('resolver1.opendns.com',53);
if ($check1 == "YES" || $check2 == "YES"){
echo "Internet Available";
}
function checkState($site, $port) {
$state = array("NO", "YES");
$fp = @fsockopen($site, $port, $errno, $errstr, 2);
if (!$fp) {
return $state[0];
} else {
return $state[1];
}
}
和使用
检查DNS解析$nameToIP = gethostbyname('www.google.com');
if (preg_match('/^'d/', $nameToIP) === 1) {
echo "DNS Resolves";
}
有谁能推荐一个更好的方法吗?因此,如果没有连接,页面不会长时间停滞。谢谢
您可以使用fsockopen
下面的例子可以很好地告诉你是否连接到internet
function is_connected() {
$connected = @fsockopen("www.google.com", 80); //website, port (try 80 or 443)
if ($connected){
fclose($connected);
return true;
}
return false;
}
参考:https://stackoverflow.com/a/4860432/2975952
检查DNS
在这里解析
function is_site_alive(){
$response = null;
system("ping -c 1 google.com", $response);
if($response == 0){
return true;
}
return false;
}
参考:https://stackoverflow.com/a/4860429/2975952