所以我试图做一个管理面板,并显示所有不同服务的状态。
为了实现这一点,我使用一个函数来查看端口是否响应。
以下是代码:
public function getPort($ports, $host = NULL) {
if (!$host) { $host = "somesite.com"; }
$ports = array($ports);
foreach ($ports as $port) {
$connection = @fsockopen($host, $port);
if (is_resource($connection)) {
return "<span class=\"label label-success\">Online</span>";
fclose($connection);
} else {
return "<span class=\"label label-danger\">Offline</span>";
}
}
}
端口80和21的端口显示为在线但不是像3306 for MySQL或9987这样的端口。有没有办法让我首先检查为什么它是这样然后也解决这个问题,以便它显示为在线?
答案 0 :(得分:1)
默认情况下,MySQL的3306端口仅在本地IP地址 - 127.0.0.1上可用,因此如果您从机器外部测试端口,它将显示为已关闭。
如果要监控来自其他计算机的服务,请确保您的防火墙允许这样做,并确保您的服务正在侦听全局IP地址,而不是127.0.0.1(您可以执行简单的netstat -an |grep LISTEN
来验证)。