【问题标题】:PHP fsockopen() : local test server vs remote serverPHP fsockopen() :本地测试服务器与远程服务器
【发布时间】:2023-12-23 01:26:01
【问题描述】:

我希望我缺少关于 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 函数检查与各种我的世界服务器的连接。

问题:这段代码在我的本地和远程网络服务器上都完成了它应该做的事情。但是,在我的远程服务器上,即使我知道它们已启动,状态也始终显示为 DOWN,它们在我的本地服务器上也显示为 UP。我不知道为什么我的主机无法访问这些服务器,所以我希望这是我不知道的服务器怪癖。

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

感谢您的阅读和您的时间 ~TylerTofWA

【问题讨论】:

  • 在您的远程服务器上,尝试使用 telnet 访问这些端口上的服务器。我怀疑您会发现由于防火墙/过滤而无法访问它们。

标签: php apache local fsockopen


【解决方案1】:

删除fsockopen 上的@ 以停止抑制错误,以查看远程服务器上是否出现错误。还要确保将error_reporting 设置为使用error_reporting(A_ALL) 显示所有错误。

【讨论】:

  • 嗯,它说它无法连接到那些 IP/端口。也许我的托管公司以某种方式阻止了连接?
【解决方案2】:

已解决。

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

泰勒!

感谢您与我们联系。

您的脚本运行大约需要 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 DOWN 服务器 2: 50.22.36.xxx:25591 DOWN on

(所以它看起来像您的浏览器或 http 连接超时)。 除非你知道调整的方法 你的脚本来降低超时 变量,您的浏览器网络超时 设置,或者如果你要运行 两个 fsocks 同时你会 有运行时间吗?

如果您还有其他需要,请告诉我们 问题或疑虑。

问候,

------ Robert C. Server Analyst II SurpassHosting.com, LLC http://www.surpasshosting.com http://www.surmunity.com


我:感谢您的及时回复!

嗯,花了十秒钟,因为那里 是 5 次连接尝试 秒超时。

问题是他们不应该 超时,我在服务器中 现在,我的本地服务器可以连接 用 fsockopen 没问题,会 将它们显示为 UP。

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

感谢您的宝贵时间,TylerT


他们:你好泰勒,

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

谢谢

问候, Praveen M 高级 Unix 管理员 SurpassHosting.com, LLC http://www.surpasshosting.com http://www.surmunity.com

我不知道他们是否会告诉我问题出在哪里,我很好奇。不过第一次回复就笑了。

【讨论】:

    最近更新 更多