当加载来自同一站点的另一个页面时,页面挂起

时间:2014-01-29 21:03:44

标签: php session hang

在我的应用程序中看到一些奇怪的行为。每当我有一个长时间运行的脚本等待浏览器中的响应时,应用程序中的任何其他页面将在单击后旋转/挂起(即使对于非常简单的//静态页面),直到原始页面完成加载。这是一个基于PHP5.3的应用程序,在Apache 2.2.x上使用本机PHP会话。

在我们所有的dev,qa和production实例中的多个浏览器中都会发生这种情况。我不知道从哪里开始寻找。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

$_SESSION获取所需的所有数据,然后在之前调用session_write_close() ,以便做一些需要很长时间的事情。由于PHP脚本仍然在该会话中处于活动状态,它会锁定会话(毕竟,它可能会将一些数据写入下一个请求所需的该会话)。

如果您需要在之后为会话写一些内容,那么您可以再次致电session_start()(前提是您尚未生成输出),写到它,然后脚本可能会结束,或者你可能会重复这个循环几次。

此外,如果您不需要,请不要致电session_start(),我看到您提到'静态'页面。如果页面不需要会话数据,请避免开销和锁定它创造。