【问题标题】:Simultaneous AJAX requests causes PHP Session not to be updated properly同时 AJAX 请求导致 PHP Session 无法正确更新
【发布时间】:2013-11-19 15:18:59
【问题描述】:

在我的应用程序中,我有一个每 10 秒运行一次的 AJAX 请求,它告诉服务器用户仍处于连接状态。当用户执行操作时,另一个 AJAX 请求会发送到服务器,该请求会增加 PHP $_SESSION 变量中的一个数字。

当这两个 AJAX 请求同时发生时,我似乎遇到了问题 - $_SESSION 中的数字有时不会增加。我相信这是因为当两个请求同时运行时,有时增加 $_SESSION 变量的请求会在另一个请求之前完成,因此最后一个请求会用旧数据“覆盖”会话。有其他人遇到过这个问题或知道如何解决吗?

【问题讨论】:

  • 可以分享代码吗?

标签: php ajax session extjs


【解决方案1】:

最简单的解决方案是在当前 ajax 请求完成处理后将超时设置为接下来的 10 秒。所以不要使用间隔,在完成时设置超时。

【讨论】:

    【解决方案2】:

    问题是由我的自定义会话处理程序(使用 session_set_save_handler)引起的,该处理程序将会话信息保存到 Oracle 数据库中。它没有任何内容可以阻止两个同时修改会话的脚本。因此,为了阻止这种情况发生,我使用flock() 向会话“读取”处理程序添加了一个基于文件的锁。然后删除文件并在“销毁”处理程序中删除锁定。

    这解决了问题,但现在意味着 AJAX 请求似乎必须按顺序运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-24
      • 2017-07-24
      • 2021-12-06
      • 2016-04-20
      • 2023-01-28
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      相关资源
      最近更新 更多