2013-09-03 2 views
0

Im пытается интегрировать скрипт php, который будет проверяться каждые 30 секунд, если конкретный сервер находится в автономном режиме или в Интернете, а затем подходящим образом распечатать статус на моем веб-сайте Drupal 7.23.Drupal - Проверка онлайн-статуса внешнего сервера

Я придумал код ниже, однако скрипт php сообщает, что сервер постоянно находится в автономном режиме, даже если он находится в сети. Я не уверен, в чем проблема.

<div class="serverstatus"> 
<?php 
ini_set("display_errors", 0); //hide fsockopen/fopen warnings if file doesn't exist or couldn't connect 
$g_Status = 0; 

$g_Ip = "0.0.0.0"; //Server ip 
$g_Port = "0000"; //Server Port 

function IsOnline($ip, $port) 
{ 
    [email protected]($ip, $port, $errNo, $errStr, 3);//timeout set to 3 seconds 
    if($sock) 
    { 
     fclose($sock); 
     return 1; 
    } 
    return 0; 
} 

function RefreshStatus() 
{ 
    global $g_Ip, $g_Port; 
    $status = IsOnline($g_Ip, $g_Port); 
    //storing info about timestamp and server status 
    $file = fopen("status.txt", "wb"); 
    $timestamp = time() + 30; //it will refresh every 30 seconds - won't flood the server 
    $cont = $timestamp .' '. $status; 
    fwrite($file, $cont); 
    fclose($file); 
    return $status; 
} 

$file = fopen("status.txt", "r"); 
if(!$file) 
{ 
    //file doesn't exist 
    $g_Status = RefreshStatus(); 
}else 
{ 
    $cont = fread($file, filesize("status.txt")); 
    $data = explode(" ", $cont); //$data[0] is our timestamp and $data[1] is our server status 
    if($data[0] < time()) 
    { 
     //refresh status 
     $g_Status = RefreshStatus(); 
    }else 
    { 
     $g_Status = $data[1]; 
    } 
} 

//Display server status 
if($g_Status) 
{ 
    echo "Online"; 
}else 
{ 
    echo "Offline"; 
} 

?> 
</div> 

Im очень благодарен за все ответы! Спасибо и наилучшими пожеланиями.

+1

Вместо подавления ошибок для '@ fsockopen', почему бы не удалить' @ 'и найти ошибку? –

+0

@BenFortune Я попытался удалить @, однако drupal не сообщает о каких-либо ошибках. Он говорит, что сервер отключен, даже его нет. –

+0

Что это за сервер? –

ответ

0

Хорошо, я сделал так, чтобы он точно сообщал сервер. Im все еще не совсем уверен, что был неправ, но хорошо, его путь более простой, и если кто-то хочет знать, как подключить Drupal 7 с Lineage 2 Выделенный сервер для проверки состояния, вот код:

<div class="serverstatus"> 
<?php 
$server = "server ip"; 
$portg = "game server port"; 
$portl = "login server port"; 
$timeout = "1"; 

$game = @fsockopen("$server", $portg, $errno, $errstr, $timeout); 
$login = @fsockopen("$server", $portl, $errno, $errstr, $timeout); 

    echo "Login Server: "; 
    echo $login ? "<font color=\"green\">OnLine</font>" : "<font color=\"red\">Off line</font>"; 
    echo "<br>Game Server: "; 
    echo $game ? "<font color=\"green\">OnLine</font>" : "<font color=\"red\">Off line</font>"; 
?> 
</div> 

Спасибо за все ответы, привет.

Смежные вопросы