【问题标题】:How can I send many requests to servers in one time如何一次向服务器发送多个请求
【发布时间】: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!

【问题讨论】:

  • 当然,您可以通过异步调用来做到这一点(因此同时执行所有请求,并行)。但是有一个提示:对此存在现有且经过充分验证的解决方案,即所谓的“系统监控”。流行的选择是zabbixnagios。看看他们,为自己省去很多麻烦......
  • 你可以通过产生单独的异步请求来做到这一点,但在任何情况下,资源永远不会是无限的,网络也是如此。总是有限制的。
  • 编写函数向服务器发送请求(它包括 ajax 调用),并每分钟使用 javascript 轮询此函数。见...stackoverflow.com/questions/4930439/…
  • @arkascha 谢谢你的建议,我听说过 zabbix,但你可以看到从未使用过它:) 我会看看。
  • @ArtisiticPhoenix 谢谢,该任务的资源确实是有限的......这就是为什么我期待使用一些专门用于此监控的工具。

标签: php ajax


【解决方案1】:

我建议您通过 cron 运行此检查并将状态存储在 mysql 表中。您可以将 cron 设置为每分钟运行一次。每次检查后更新状态。在用户端,只需从 MySQL 数据库中获取服务器的状态。通过这种方式,您将解决任何超时问题,并且您将能够从 db 中快速获取服务器的状态。

【讨论】:

  • 感谢您的意见,我对 cron 不熟悉(听说过,但从未使用过)我会检查它是否对我的任务有用。
  • @gofr1 您必须检查并使用 cron 来执行此类任务,因为这将使您的脚本自动化。
【解决方案2】:

我建议使用coppereggUptime Robot 之类的工具

还有更多的解决方案。实现自己的脚本是浪费时间和资源。

【讨论】:

  • 感谢您的回答,从某种意义上说,这确实是在浪费资源,但我自己来做这件事很有趣,另一方面,像您建议的工作解决方案和工具会更好地完成这项工作。我会看看你建议的链接和工具。
【解决方案3】:

最简单的方法是使用 cron 运行更新状态作业,并将结果存储在本地文件或数据库中的某个位置。

然后您只需要获取结果并将其显示给客户端即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 2020-09-30
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    相关资源
    最近更新 更多