【问题标题】:Server Status Checker in real time实时服务器状态检查器
【发布时间】:2016-03-17 14:02:58
【问题描述】:

我设法使用 FSOCKOPEN 显示服务器的状态。

<?php
    $ip = "0.0.0.0";
    $port = "1337";
    $online = '<font class="online" title="Server Online!">ONLINE</font>';
    $offline = '<font class="offline" title="Server Offline!">OFFLINE</font>';
if (! $sock=@fsockopen($ip, $port, $num, $error, 0.25))
    {echo "$offline";}
else
    {echo "$online";}
?>

如果 IP 为“0.0.0.0”的服务器在页面加载后发送错误或在 1/4 秒内没有响应,则输出将返回 OFFLINE,否则将返回 ONLINE。

当用户刷新页面时,服务器状态会更新。

现在我想让它实时更新(延迟小于 7 秒)

我知道有一种非常简单的方法可以在 head 标签中使用 &lt;meta http-equiv=”refresh” content=”5" /&gt;

但是,COMPLETE 页面必须刷新并再次加载所有内容并导致一些不必要的流量,这很烦人。

有没有更简单的方法?

【问题讨论】:

    标签: php html server status


    【解决方案1】:

    您可以在客户端使用ajax和javascript在后台打开PHP脚本,然后根据成功/失败更新页面中的元素。

    查看jQuery 和其他库以轻松完成此操作。

    另一个选项是一个简单的&lt;iframe /&gt; 来打开另一个网站作为网站上的一个元素。

    【讨论】:

    • 我之前已经使用过 iframe。它就像另一个有流量的。此外,我希望在 http 刷新或 iframe 刷新时加载时不会中断。
    【解决方案2】:

    不要使用 ajax 或任何直接轮询机制,这会在流量方面给您的服务器带来更多负载。

    您可以使用 websockets 将数据推送到流并在前端读取它

    https://socket.io/

    这可以近乎实时地完成,并且您的页面不会被要求每分钟更新一次。

    将 PHP 脚本放入 cron 以按所需的时间间隔运行,并在其结束时将输出推送到套接字并在前端捕获它们。

    【讨论】:

    • 只有在双向通信时才需要 Web 套接字。服务器发送的事件(SSE)在这里会更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    相关资源
    最近更新 更多