php中memcache会话不一致的常见原因

php中memcache会话不一致的常见原因,php,session,memcached,Php,Session,Memcached,我的$\u会话变量定义为保存在memcache中,该变量不一致。会话值之间混淆的常见原因是什么 我在脚本开始时使用了session\u start(),但有时$\u session变量会设置为旧版本 这可能是会话锁定问题。在正常流程中,当PHP处理请求时,它会阻止会话文件的读/写(只有此进程才能读取/修改此文件) 因此,当另一个请求(比如AJAX请求)必须等到第一个请求完成并解锁会话时 默认情况下,memcache会话锁定可能已禁用,因此在这种情况下: AJAX请求A来读取会话文件(状态X) A

我的
$\u会话
变量定义为保存在
memcache
中,该变量不一致。会话值之间混淆的常见原因是什么


我在脚本开始时使用了
session\u start()
,但有时
$\u session
变量会设置为旧版本

这可能是会话锁定问题。在正常流程中,当PHP处理请求时,它会阻止会话文件的读/写(只有此进程才能读取/修改此文件)

因此,当另一个请求(比如AJAX请求)必须等到第一个请求完成并解锁会话时

默认情况下,memcache会话锁定可能已禁用,因此在这种情况下:

  • AJAX请求A来读取会话文件(状态X)
  • AJAX请求B来读取会话文件(状态X)
  • AJAX请求B结束并存储修改的会话(将状态X更改为Y)
  • AJAX请求A结束并存储修改后的会话(将状态X更改为Z,禁止状态Y)

  • 在这种情况下,您将遇到会话不一致,因为请求A将覆盖请求B所做的更改。

    有没有建议的方法来避免这种情况?