【问题标题】:FastCGI on IIS7... multiple concurrent requests from same user session?IIS7 上的 FastCGI ...来自同一用户会话的多个并发请求?
【发布时间】:2011-05-02 12:48:16
【问题描述】:

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

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

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

如果用户打开不同的浏览器并登录(这会为该用户启动一个新会话),则可能会出现并发请求。

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

【问题讨论】:

    标签: php multithreading iis fastcgi


    【解决方案1】:

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

    可能的解决方案:

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

    【讨论】:

    • 感谢您的回答,但它解释了为什么它在 Apache 上有效,而在 IIS 上无效? (剧本没变)
    【解决方案2】:

    看来我运气不好,至少在 Windows 上的 FastCGI 下运行 PHP:PHP FastCGI Concurrent Requests

    【讨论】:

      猜你喜欢
      • 2017-11-15
      • 2017-07-04
      • 2013-09-29
      • 2014-10-26
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多