检查服务器状态 - 在线/离线

时间:2015-03-11 13:28:43

标签: php ip-address server

我有一个循环,显示来自数据库的许多不同服务器的信息。 现在我正在尝试写,如果他们在线或离线。 我试图手动写入srcipt的IP地址和端口,它工作正常。但是,当我试图将表放入变量时,它表明所有都处于脱机状态。他们中的大多数使用44405端口,所以我现在手动将其检查。

编辑:是的我知道这个mysql代码已经准备好并等待注入:D

<?php //-----loading servers to website-----
error_reporting(E_ALL); 
ini_set('display_errors','1');

$connection = //deleted this part coz includes personal info :D


$alldata = mysql_query("SELECT * FROM muonline ORDER BY id DESC;");
while ($loadservers = mysql_fetch_assoc($alldata)) {


echo "<tr>";

  echo '<td>';  //-----here starts the online/offline part of script-----

    $serwer = $loadservers['serverAddress'];
    $port="44405";
    $socket=@fsockopen($serwer,$port,$errno,$errstr,2);

    if($socket==true)
    {
     echo "<p>online</p>";
    }else{
     echo "<p>offline</p>";
    }
    echo '</td>';

//------- here is being loaded rest of info of the each server-----
echo "<td><p>" .$loadservers['serverName']."</p></td>";
echo "<td><p>". '<a href="' .$loadservers['serverAddress'].'"target="_blank"><p>'.$loadservers['serverAddress']. "</p></a>". "</td>";
echo "<td><p>" .$loadservers['serverExp']. "</p></td>";
echo "<td><p>" .$loadservers['serverDrop']. "</p></td>";
echo "<td><p>" .$loadservers['info']. "</p></td>";
echo "</tr>";
}

mysql_close();
?>

1 个答案:

答案 0 :(得分:3)

您尝试将fsockopen用于以http://开头的服务器。您需要使用parse_url解析网址,提取网址的host部分并使用该网址进行检查。像这样:

$parsedUrl = parse_url($loadservers['serverAddress']);
$socket = fsockopen($parsedUrl['host'],$port,$errno,$errstr,2);