【问题标题】:Checking server status - online/offline检查服务器状态 - 在线/离线
【发布时间】:2015-05-13 07:37:37
【问题描述】:

我有一个循环显示来自数据库的许多不同服务器的信息。 现在我正在尝试写他们是在线还是离线。 我试图手动将 IP 地址和端口写入 srcipt,它工作正常。但是,当我尝试将表放入变量时,它显示所有内容都处于脱机状态。他们中的大多数使用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();
?>

【问题讨论】:

  • 回显 $serwer 的值 - 仔细检查您的期望。
  • 另外,删除fsockopen 前面的@ - 它会抑制您在此处收到的任何错误消息。
  • 感谢您的精彩提示。我回应了它,网站向我显示了特定服务器的地址,例如 www.... 所以这正是我想要的并且看起来是正确的
  • @Bulk 谢谢,我只是这样做了,但没有任何改变:(我不知道我是否可以在这里发布,但这是我的网站:mutoplist.com
  • 服务器都是以http://开头的吗?我相当确定 fsockopen 仅适用于服务器名称。

标签: php ip-address server


【解决方案1】:

您正在尝试将fsockopen 与以http:// 开头的服务器一起使用。您需要使用 parse_url 解析 URL,提取 URL 的 host 部分并使用它进行检查。像这样:

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

【讨论】:

  • 投票需要更多的声誉,请尽快:D
猜你喜欢
  • 1970-01-01
  • 2012-03-20
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
相关资源
最近更新 更多