端口没有响应但正在工作


Ports not responding but working?

所以我试图做一个管理面板,同时显示所有不同服务的状态。

为了实现这一点,我使用了一个函数来查看端口是否响应。

这是代码:

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来验证这一点)。