【发布时间】:2011-12-24 06:11:21
【问题描述】:
我们的一位客户说他们有一个非常简单的脚本,它使用 fsockopen() 来确定服务器是否在线。他们说直到最近它通过我们在他们的网站上运行良好,但最近刚刚停止工作,所以我假设这是一个设置。
我的第一个想法是他将其用作 TCP 并将 IP/端口用于游戏服务器,但是他和我自己都确认该脚本在其他各种 Web 主机上运行良好。
我们的问题可能是什么?
作品:http://crazygfl.xfactorservers.com/query.php?ip=www.xfactorservers.com&port=80
作品:http://crazygfl-stats.com/query.php?ip=109.73.163.231&port=27015
不起作用:http://crazygfl.xfactorservers.com/query.php?ip=109.73.163.231&port=27015
这里是代码...
<?php
$timeout = (isset($_GET['timeout']) ? ($_GET['timeout'] <= 0 ? 30 : ((int)$_GET['timeout'])) : 30);
if(empty($_GET['ip'])&&empty($_GET['port'])){
echo 'No IP/Port specified.';
}else{
if(fsockopen($_GET['ip'], $_GET['port'], $errno, $errstr, $timeout) === false){
echo 'offline';
}else{
echo 'online';
}
}
【问题讨论】:
-
您确定 fsockopen 功能没有被禁用?
-
可能是一个聪明而精明的人阻止了来自其他主机的无效请求(假设它在不同的 IP 上)。这可以解释不一致的行为
-
“有效”/“无效”是什么意思 它是否返回一条消息但不是预期的?它没有输出吗?超时了吗?
标签: php apache cpanel fsockopen connection-timeout