【发布时间】:2026-01-07 20:25:02
【问题描述】:
我想创建一个页面,允许 IT 人员从列表中选择一些服务器并在它们上执行操作,然后单击执行。然后让页面上的 textarea 更新每个操作完成时的状态。每个服务器维护任务可能需要一两分钟。他们希望在每台服务器完成所选任务时看到页面上的更新。
不确定在前端使用哪些技术。后端根本不是问题。我可以轻松获取服务器的完整列表,在每台服务器上执行操作,然后返回完整列表以及每台服务器的结果。但是,没有人愿意等待所有服务器完成后才获得更新。
通常我会使用 ajax 来更新页面的一部分,但这只是针对单个调用/响应。我想如果我使用 javascript 循环通过 ajax 为每个服务器调用 php 脚本,那么 javascript 循环将阻止 UI 更新,直到 javascript 函数完成。
有什么想法吗?
【问题讨论】:
-
您可以使用
EventSource将数据流式传输到浏览器。见*.com/questions/42512572/…、*.com/questions/42475492/… -
我认为 EventSource 方法用于一遍又一遍地对服务器进行相同的调用(传递相同的参数)以获取更新。我看到的大多数示例都是获取服务器日期/时间。在这个用例中,IT 人员将转到该页面,选择一些服务器并发出 1 个请求来处理整个列表(一次)。
-
您可以使用
Promise.all()处理异步函数数组,并在所有Promise传递完成或函数被调用或完成时返回响应数组。见*.com/questions/42180299/… -
也许我可以使用一个承诺,但 promise.all 听起来并不适用。完成所有任务后,我无需做任何事情。相反,我需要在每个服务器完成其任务时对页面进行更新。用户不想等到所有服务器都完成了请求的任务后才看到网页上的任何输出。
标签: javascript php lamp