IIS7上的FastCGI ...来自同一用户会话的多个并发请求?

时间:2010-10-29 16:56:24

标签: php multithreading iis fastcgi

警告:我意识到这可能是一个服务器配置问题,但我认为可能有一个程序化的答案,这就是我在这里发帖的原因......

在Apache上运行PHP,我们的用户能够发出多个并发请求(例如,来自同一浏览器中的不同选项卡)。

自从迁移到IIS下的FastCGI后,这不再是默认行为。现在,当用户启动对服务器的请求并且浏览器正在等待响应时,如果他们打开新选项卡并启动另一个请求,则在IIS完成上一个请求之前,IIS不会处理新请求。 p>

如果用户打开其他浏览器并登录(为该用户启动新会话),则可以进行并发请求。

我的问题是:有没有办法配置FastCGI / IIS7,允许来自同一用户会话的多个并发请求?如果没有,是否有其他方法允许这样做?

2 个答案:

答案 0 :(得分:3)

问题是会话机制,很有可能。默认情况下,PHP Sessions因为它们正在使用文件系统,所以必须等待会话文件关闭才能再次打开它们。因此,对同一会话的后续请求会等待先前的请求,或者除了您的另外一个示例之外,如果您有一个带有三个帧的框架集页面( shudder ),每个框架引用会话,它们会所有一次加载一个,因为每个页面都必须等待会话机制。

可能的解决方案:

  • 完成会话后,请致电session_write_close()
  • 实现使用数据库而不是文件系统的自定义数据库处理程序。

答案 1 :(得分:0)

看起来我运气不好,至少在Windows下使用FastCGI运行PHP:PHP FastCGI Concurrent Requests