缓慢的服务器脚本使IE停滞

时间:2010-07-29 08:16:34

标签: php web-services internet-explorer web-applications internet-explorer-8

我正在开发一个涉及第三方Web服务调用的php Web应用程序。最近我遇到了问题,因为一些Web服务很慢和/或超时。 (当发生这种情况时,服务会在5-6分钟后抛出一个错误,由Web应用程序处理)

然而,问题在于,在等待结果/超时时,浏览器中的Web应用程序的所有其他连接(IE中的其他窗口/选项卡)停止。这似乎是浏览器的一个问题,因为如果在另一个浏览器(例如Chrome)中打开辅助窗口,Web应用程序会毫不拖延地提供页面。

我考虑过异步设置Web服务调用(单独的server.side进程,或浏览器中的ajax调用),但同时我想知道为什么IE将所有连接都放到了等待一个页面时等待的Web应用程序?可能是自定义标头或其他琐碎的标记技巧会告诉IE继续连接到同一主机上的其他页面吗?

1 个答案:

答案 0 :(得分:1)

  

问题在于等待结果/超时,浏览器中与Web应用程序的所有其他连接

您所看到的是正常和预期的行为,如果您正在使用会话。当会话所有者发出请求时,默认的基于文件的会话处理程序会锁定会话文件。请求完成后,锁定即被释放。与此同时,如果用户发出任何进一步的请求,那些请求将等待锁定被释放,然后才能继续。此行为可防止可能导致会话数据丢失的竞争条件。

如果你没有使用会话,或者你已经编写了自己的会话处理程序并且它没有锁定(大多数都没有,你必须自己编写这种行为),那么是的,IE是怪异的,我有没有进一步的建议。

  

我考虑过异步设置Web服务调用

如果Web服务不可靠,这是个好主意。您应该考虑Gearman,一个工作/消息队列系统。它有comprehensive PHP support作为PECL extension