服务器是否可以强制浏览器等待而不更改网页代码


Can a server force browser to wait without changing webpage code?

我有一个后端服务器来处理来自几个不同网站的请求。这意味着许多网站要求我的服务器提供他们向用户浏览器提供的信息。

这些网站有自己的代码和服务器,我无法控制。我必须更改我的后端代码,现在将导致将数据返回到他们的服务器以呈现给他们的客户端 Web 浏览器长达 5 分钟的延迟。

由于我无法更改所有客户端的网站,我的后端服务器是否有办法强制客户端浏览器在浏览器上按提交后等待而不是超时?

是否有一些东西我可以返回到客户端服务器,他们可以传递给他们的客户端浏览器,以便它继续等待并且在因为我忙于处理数据而没有从他们的网站得到回复时不会放弃?

现在我使用php,但我可以使用任何可以解决问题的语言。

我绝望了!

谢谢粗糙!

大多数浏览器将无限期地等待服务器响应请求(或至少等待很长时间(,前提是成功连接到服务器,并且请求到达服务器。

不过我不推荐这条路线。 虽然浏览器会等待,但用户可能不会。 我建议在后台完成您的工作,更新数据库中的工作状态或其他内容。 在客户端,您可以定期轮询通过 AJAX 的更新,然后在作业完成后根据需要重定向用户。

最好的做法是确保服务器不会使您的 php 执行超时,确保设置 PHP 脚本允许的执行时间以及 http 守护程序的所有其他适用超时设置以及 php 超时设置。

就客户端超时而言,这里可以做的不多,客户端决定何时有足够的时间并断开连接。如果可以的话,你可以做的一个技巧是输出一些东西,直到最终结果,只要输出不断通过,通常客户端不会超时。这可能意味着在准备好最终计算之前输出周期。

如果你真的无法控制客户端代码,你能做的最好的事情就是尝试让你的队伍更快。如果可以,缓存数据,预先计算结果等

耗时的进程分叉到后台。让他们将其(部分(输出数据传达到会话存储中。定期将主页重定向到自身,从会话存储中读取内容。

有关完整的程序,请参阅通过 CGI 观看长进程。