如何在PHP请求中间重新加载会话变量

时间:2018-08-16 16:37:57

标签: php ajax session session-variables

我有一个网站,该网站的Ajax请求运行时间长,当用户仍在与该网站进行交互并发出其他请求时,该请求“在后台”发生。

由于会话锁定,我不想长时间运行的Ajax请求阻止其他页面。

页面在CMS中运行,该CMS在请求开始时启动会话,并在请求结束时关闭会话。

在长时间运行的页面中,我可以在完成所有长时间运行的工作之前使用session_write_close(),然后再进行session_start()(以释放会话锁)。但是,问题在于,如果在此期间有任何其他请求写入会话,则其工作将被覆盖。有没有一种方法可以启动会话,但是同时将所有写入的$ _SESSION变量重新加载?

示例(长时间运行的请求为A,短期请求为B):

  1. 请求A-CMS开始会话
  2. 请求A-应用程序关闭会话
  3. 请求A-应用程序进行长时间查询
  4. 请求B-CMS启动会话,应用程序更改会话,CMS写入会话。
  5. 请求A-长时间运行的查询结束,应用程序更改了会话
  6. 请求A-应用再次开始会话
  7. 请求A-CMS写入会话。

在这种情况下,请求B的更改将被覆盖。有没有办法让请求A可以重新加载会话变量(在上面的#6)?

0 个答案:

没有答案