0

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

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

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

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

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

我很绝望!

谢谢粗!

4

3 回答 3

1

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

至于客户端超时,这里没有什么可以做的,客户端决定他们什么时候有足够的时间并断开连接。如果可以的话,您可以做的一个技巧是在最终结果的过程中输出一些东西,只要输出不断通过,通常客户端不会超时。这可能意味着在您准备好最终计算之前输出周期。

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

于 2012-05-09T15:10:28.897 回答
1

大多数浏览器会无限期地等待(或至少,很长一段时间)服务器响应请求,前提是与服务器建立了成功的连接,并且请求将其发送到服务器。

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

于 2012-05-09T15:08:55.043 回答
0

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

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

于 2012-05-09T16:05:54.533 回答