我有一个简单的脚本来检查服务器是在线还是离线,但是这个脚本似乎不能在我想要的服务器上运行。
这是剧本:
$value = mysql_result($result,$i,"servername");
$value2 = mysql_result($result,$i,"serveraddress");
$value3 = mysql_result($result,$i,"portnumber");
$value4 = mysql_result($result,$i,"description");
$id = mysql_result($result,$i,"id");
ob_start();
if (!$socket = @fsockopen($value2, $value3, $errno, $errstr, 1))
{
echo " <font color='red'><CENTRE><strong>OFFLINE</strong></CENTRE></font>";
}
else
{
echo " <font color='green'><CENTRE><strong>ONLINE</strong></CENTRE></font>";
fclose($socket);
}
$status = ob_get_contents();
ob_end_clean();
?>
问题是,如果我说使用谷歌地址和端口80它将显示谷歌的在线,如果我使用外部IP地址和7000左右的端口,它将无法显示服务器是否在线,尽管它是线上。我不知道为什么会这样,我在考虑它可能是因为在显示它关闭的时候没有数据通过端口发送。
有人可以对此有所了解并且可能会纠正这种情况。