我有一个后端服务器来处理来自几个不同网站的请求。这意味着许多网站会向我的服务器询问他们向用户浏览器提供的信息。
这些网站有自己的代码和自己的服务器,我无法控制。我必须更改我的后端代码,这会导致将数据返回到他们的服务器最多延迟5分钟,以便呈现给他们的客户端Web浏览器。
由于我无法更改所有客户端的网站,我的后端服务器是否有办法强制客户端浏览器等待,而不是在浏览器上按提交后超时?
是否有一些东西我可以返回到客户端服务器,他们可以传递给他们的客户端浏览器,以便它等待并且当它没有得到他们网站的回复时放弃,因为我正在忙着处理数据?
现在我正在使用php,但我可以使用任何可以解决问题的语言。
我很绝望!
由于 粗!
答案 0 :(得分:1)
大多数浏览器将无限期地(或至少,非常长时间)等待服务器响应请求,前提是已成功连接到服务器,并且请求将其发送到服务器。
我不会推荐这条路线。虽然浏览器会等待,但用户可能不会。我建议你在后台完成你的工作,在数据库或其他东西中更新作业的状态。在客户端,您可以定期通过AJAX轮询更新,然后在作业完成时根据需要重定向用户。
答案 1 :(得分:1)
您最好的操作方法是确保服务器不会超时执行您的php,确保设置php脚本允许的执行时间以及http守护程序的所有其他适用的超时设置以及php超时设置。
就客户端超时而言,这里没有太多可以做的事情,客户端决定他们何时有足够的时间并断开连接。如果可以的话,你可以做的一件事就是输出一些东西到最终结果,只要输出不断通过,通常客户不会超时。这可能意味着在您准备好最终计算之前输出句号。
如果您真的无法控制客户端代码,那么您可以做的就是尽量让自己更快。如果可以,请缓存数据,预先计算结果等
答案 2 :(得分:0)
将时间密集型流程分解为后台。让他们将他们的(部分)输出数据传达到会话存储中。定期将主页面重定向到自身,从会话存储中读取内容。
有关完整的计划,请参阅Watching long processes through CGI。