PHP fsockopen (): локальный тестовый сервер против удаленного сервера - PullRequest
0 голосов
/ 25 марта 2011

Я надеюсь, что есть недоверие к 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>";
    ?>

Что он делает: проверяет соединение с различными Minecraftсерверы с функцией fsockopen.

Проблема: этот код делает именно то, что должен делать как на моем локальном, так и на моих удаленных веб-серверах.Однако на моем удаленном сервере статус всегда отображается как ВНИЗ, даже когда я знаю, что они ВВЕРХ, они также отображаются как ВВЕРХ на моем локальном сервере.Я не могу понять, ПОЧЕМУ мой хост не сможет получить доступ к этим серверам, поэтому я надеюсь, что это серверная причуда, о которой я не знаю.

Как вы можете помочь: Возможно, есть еще один способ эффективнопинг IP в php, что я мог бы использовать?или, может быть, вы знаете о настройке сервера, которая влияет на мое подключение.

спасибо за чтение и ваше время ~ TylerTofWA

Ответы [ 2 ]

0 голосов
/ 25 марта 2011

Решено.

Я связался со своей хостинговой компанией и получил следующее:

Тайлер!

Спасибо, что связались с нами.

Вашзапуск сценария занял около 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.36.xxx:25591 ВНИЗ на

(похоже, ваш браузер или http-соединение истекает с вашей стороны).Если вы не знаете, как настроить скрипт для уменьшения переменной тайм-аута, настройки тайм-аута вашего браузера или, возможно, если бы вы запускали оба fsocks одновременно, у вас было бы время выполнения?

Дайте нам знать, если выесть какие-либо дополнительные вопросы или проблемы.

С уважением,

------ Роберт С. Серверный аналитик II SurpassHosting.com, LLC http://www.surpasshosting.com http://www.surmunity.com


ME: Спасибо за быстрый ответ!

Ну, это заняло десять секунд, потому что есть две попытки подключения с 5-секундными тайм-аутами.

Проблема в том, что они НЕ должны иметь тайм-аут,Я сейчас на сервере, и мой локальный сервер может без проблем подключиться к fsockopen и отобразит их как UP.

Чего я не понимаю, так это того, почему мой сценарий не может «видеть» мою игрусерверы с моего веб-сервера.

Спасибо за ваше время, TylerT


Them: Hello Tyler,

Проблема исправлена, теперь вы можете просматривать статус.

Спасибо

С уважением, Правeen M Старший администратор Unix SurpassHosting.com, LLC http://www.surpasshosting.com http://www.surmunity.com

Не знаю, скажут ли мне, в чем проблема, мне очень любопытно.LOL при первом ответе, хотя.

0 голосов
/ 25 марта 2011

Удалите @ на fsockopen, чтобы прекратить подавление ошибок, чтобы увидеть, есть ли ошибки на удаленном сервере.Также убедитесь, что error_reporting настроен на отображение всех ошибок, используя error_reporting(A_ALL).

...