0

私が見逃している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 サーバーとリモート Web サーバーの両方で実行するはずのことを正確に実行します。ただし、リモート サーバーでは、UP であることがわかっている場合でもステータスは常に DOWN と表示され、ローカル サーバーでも UP と表示されます。私のホストがこれらのサーバーにアクセスできない理由がわからないので、私が知らないサーバーの癖であることを願っています。

どのようにあなたが助けることができるか: 私が使用できる php で IP を効果的に ping する別の方法があるでしょうか? または、私の接続に影響を与えているサーバー設定を知っているかもしれません。

読んでくれてありがとう〜TylerTofWA

4

2 に答える 2

0

解決しました。

ホスティング会社に連絡したところ、次のものが得られました。

タイラー!

お問い合わせいただきありがとうございます。

スクリプトの実行には約 10 秒かかりましたが、実行されました。

[/root]# 時間 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 Server Status Server 1: 70.89.xxx.226:25565 DOWN Server 2: 50.22.36.xxx:25591 DOWN on

(そのため、ブラウザまたは http 接続がタイムアウトしているようです)。スクリプトを調整してタイムアウト変数やブラウザのネットワーク タイムアウト設定を下げる方法を知らない限り、または両方の fsock を同時に実行した場合に実行時間が長くなるでしょうか?

ご質問やご不明な点がございましたら、お気軽にお問い合わせください。

よろしく、

------ Robert C. サーバー アナリスト II SurpassHosting.com, LLC http://www.surpasshosting.com http://www.surmunity.com


ME: 早速のお返事ありがとうございます!

5 秒のタイムアウトで 2 回の接続試行があるため、10 秒かかりました。

問題は、それらがタイムアウトしてはならないことです。私は現在サーバーにいます。ローカル サーバーは fsockopen で問題なく接続でき、UP として表示されます。

理解できないのは、スクリプトが Web サーバーからゲーム サーバーを「認識」できない理由です。

お時間をいただきありがとうございます、TylerT


彼ら: こんにちはタイラー ,

問題は修正され、ステータスを表示できるようになりました。

ありがとう

よろしく、 Praveen M 上級 Unix 管理者 SurpassHosting.com, LLC http://www.surpasshosting.com http://www.surmunity.com

彼らが何が問題だったのか教えてくれるかどうかはわかりませんが、とても興味があります。しかし、最初の応答で笑。

于 2011-03-25T11:24:06.957 に答える
0

@onを削除しfsockopenてエラーの抑制を停止し、リモート サーバーでエラーがスローされているかどうかを確認します。また、error_reportingを使用してすべてのエラーを表示するように設定されていることを確認してerror_reporting(A_ALL)ください。

于 2011-03-25T03:55:07.567 に答える