所以我试图做一个管理面板,同时显示所有不同服务的状态。
为了实现这一点,我使用了一个函数来查看端口是否响应。
这是代码:
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这样的端口显示为联机,但不是像MySQL或9987的3306这样的端口。有没有办法让我先检查一下为什么会这样,然后解决这个问题,让它看起来像在线的?
默认情况下,MySQL的3306端口仅在本地IP地址127.0.0.1上可用,因此如果您在机器外部测试端口,它将显示为关闭。
如果你想从另一台机器监控你的服务,请确保你的防火墙允许,并确保你的服务监听全局IP地址,而不是127.0.0.1(你可以做一个简单的netstat -an |grep LISTEN
来验证这一点)。