【发布时间】:2016-05-23 05:27:38
【问题描述】:
情况:
我得到了显示我们所有服务器的页面(我们将它们命名为资源)。该列表是从 MS SQL 数据库中获得的。 为了展示它们,我从数组和回显中获取它们。 echo 之后 - 我向每个资源发送请求以获取其状态(200、404、502 等)。
问题:
当有 10-20 个资源时,页面加载几秒钟,但现在有近 100 个资源(并且会更多),页面加载约 1 分钟。现在我的经理说我们需要每 1 分钟检查一次状态。
所以,我的问题是 - 我怎样才能做到这一点?一般来说 - 我可以吗? :)
我不需要代码或工作解决方案,我需要一些指导,我该如何实现?要搜索什么?读什么?也许有一些库甚至一些框架的解决方案可以更好、更简单地做到这一点?
我已经阅读了一些关于 SO 的文章和问题: http://www.w3schools.com/php/php_ajax_intro.asp Sending data from server to client? fetch data from text file and update web page every minute
而且我认为我需要了解 AJAX 并使用它。但我发现的任何指导都是:实时搜索、动态选择输入内容、在字段中输入时的建议等。
正如我所见,一定有一个像我现在拥有的页面servers.php,当我加载它时,它会获取并显示所有服务器。然后它为每个资源调用 check_status.php 并动态更新数据,然后每 1 分钟重新加载一次页面。但我不明白如何一次向所有服务器发送这么多(约 100 个)请求。
编辑
我们得出了这样的结论:我们将运行 Linux 虚拟机并运行 cron 作业以随时了解我们的资源状态。使用 Ajax 检查状态的脚本编写起来很简单,这出乎我的意料。为了存储日志,我们将使用 MySQL 数据库并编写简单的页面来处理日志。感谢大家参与答题和cmets!
【问题讨论】:
-
当然,您可以通过异步调用来做到这一点(因此同时执行所有请求,并行)。但是有一个提示:对此存在现有且经过充分验证的解决方案,即所谓的“系统监控”。流行的选择是
zabbix或nagios。看看他们,为自己省去很多麻烦...... -
你可以通过产生单独的异步请求来做到这一点,但在任何情况下,资源永远不会是无限的,网络也是如此。总是有限制的。
-
编写函数向服务器发送请求(它包括 ajax 调用),并每分钟使用 javascript 轮询此函数。见...stackoverflow.com/questions/4930439/…
-
@arkascha 谢谢你的建议,我听说过 zabbix,但你可以看到从未使用过它:) 我会看看。
-
@ArtisiticPhoenix 谢谢,该任务的资源确实是有限的......这就是为什么我期待使用一些专门用于此监控的工具。