【发布时间】:2013-03-05 19:14:58
【问题描述】:
我一直在篡改脚本时遇到问题。
我正在尝试为我的游戏服务器制作一个在线检查器,这样我就可以从我的网站上指出我的服务器是在线还是关闭。这是我的代码:
<?php
if (!$socket = @fsockopen(IP, Port, $errno, $errstr, 2))
{
echo "<center><img style='float:left;' src='images/offline_icon.png'><font style='float:left;' size='5' color='red'><strong>Offline!</strong></font></center>";
}
else
{
echo "<center><img style='float:left;' src='images/online_icon.png'><font style='float:left;' size='5' color='green'><strong>Online!</strong></font></center>";
fclose($socket);
}
?>
我的问题是,它失败了。如果我将超时设置为 30,它将等待 30 秒,然后将其标记为离线并继续。
如果我在终端中ping IP,它工作得很好。
查了一下ping和端口,好像是有问题。
有没有办法在没有端口的情况下对 IP 执行正常 ping?喜欢linux命令行吗?
【问题讨论】:
-
游戏服务器是否也在运行网络服务器?如果是这样,您可以使用一个小的 html 文件来确定它是否还活着吗?
file_get_contents('http://www.example.com/alive.html');失败时返回 false。 -
游戏服务器远程托管。我已经知道这是可能的:(
-
尝试使用80端口,这是
http://使用的端口。 -
我知道,但是服务器没有托管任何网络服务器。
-
我不知道这是否有效,但试试这个功能(使用
socket_create):php.net/manual/en/function.socket-create.php#101012