PHP fsockopen():本地测试服务器与远程服务器

PHP fsockopen():本地测试服务器与远程服务器,php,apache,local,fsockopen,Php,Apache,Local,Fsockopen,我希望apache/php中有一个我不知道的怪癖 守则: <?php $servers = array( array("70.89.xxx.226",25565,''), array("50.22.xxx.147",25591,''), ); foreach($servers as $key=>$server){ $fp = @fsockopen($server[0],$server[1],$errno,$er

我希望apache/php中有一个我不知道的怪癖

守则:

<?php
    $servers = array(
        array("70.89.xxx.226",25565,''),
        array("50.22.xxx.147",25591,''),
    );

    foreach($servers as $key=>$server){
        $fp = @fsockopen($server[0],$server[1],$errno,$errstr,.5);
        if(!$fp) {
            $servers[$key][2] = "DOWN";
        } else {
            $servers[$key][2] = "UP";
            @fclose($fp);
        }
        unset($fp);
    }


    echo"
    <table>
        <thead>
            <td>Minecraft Server Status</td>
        </thead>";

    foreach ($servers as $key=>$server){
        $keyplus = $key + 1;
        echo"
        <tr>
            <td>Server $keyplus: $server[0]:$server[1]</td>
            <td>$server[2]</td>
        </tr>";
    }

    echo "
    </table>";
    ?>

功能:使用fsockopen功能检查与各种minecraft服务器的连接

问题是:这段代码在我的本地和远程web服务器上执行的正是它应该执行的操作。但是,在我的远程服务器上,即使我知道它们已打开,状态也始终显示为“关闭”,在我的本地服务器上也显示为“打开”。我不明白为什么我的主机不能访问这些服务器,所以我希望这是一个我不知道的服务器怪癖

如何提供帮助:也许我可以使用另一种方法在php中有效地ping一个IP?或者您可能知道影响我连接的服务器设置

谢谢你的阅读和时间
~TylerTofWA

删除
fsockopen
上的
@
以停止抑制错误,查看远程服务器上是否抛出错误。另外,请确保设置为使用
错误报告(A\u all)
显示所有错误已解决

我联系了我的托管公司,得到了以下信息:

泰勒

谢谢联系我们

你的脚本运行了大约10秒,但是 它确实运行了:

[/root]#time php-q-f/tmp/nanno

   <table>
           <thead>
                   <td>Minecraft Server Status</td>
           </thead>
           <tr>
                   <td>Server 1: 70.89.xxx.226:25565</td>
                   <td>DOWN</td>
           </tr>
           <tr>
                   <td>Server 2: 50.22.xxx.147:25591</td>
                   <td>DOWN</td>
           </tr>
   </table> real    0m10.071s user    0m0.047s sys     0m0.019s

Minecraft服务器状态
服务器1:70.89.xxx.226:25565
向下
服务器2:50.22.xxx.147:25591
向下
实际0m10.071s用户0m0.047s系统0m0.019s
坏消息是,你的服务器坏了。 但是,脚本的这一部分是 好的;)。。。我确实得到了:地雷船 服务器状态服务器1: 70.89.xxx.226:25565关闭服务器2:50.22.36.xxx:25591关闭

(因此它看起来像您的浏览器或http 连接在您端超时)。 除非你知道如何调整 您的脚本将降低超时时间 变量,浏览器网络超时 设置,或者如果要运行 同时使用两个FSock,您将 你有跑步时间吗

如果您有任何进一步的问题,请告诉我们 问题或担忧

问候,

------Robert C.服务器分析师II SurpassHosting.com,LLC http://www.surmunity.com


我:谢谢你的及时回复

好吧,花了十秒钟,因为 是否有两次使用5的连接尝试 第二次暂停

问题是,他们不应该这样做 超时,我在服务器上,对吗 现在,我的本地服务器可以连接了 使用fsockopen没有问题,并且将 将它们显示为“向上”

我不明白的是为什么我的 脚本无法“查看”我的游戏服务器 从我的网络服务器

谢谢你的时间,泰勒


他们:你好,泰勒

问题已解决,您可以查看 现在是状态

谢谢

尊敬的Praveen M高级Unix管理员 SurpassHosting.com有限责任公司 http://www.surmunity.com


我不知道他们是否会告诉我问题出在哪里,我很好奇。在第一次响应时大笑。

在远程服务器上,尝试使用telnet访问这些端口上的服务器。我怀疑你会发现,由于防火墙/过滤,你无法访问它们。嗯,它说它无法连接到那些IP/端口。也许我的主机公司在某种程度上阻止了连接?