Php 会话锁。session_write_close()不';行不通

Php 会话锁。session_write_close()不';行不通,php,ajax,session,Php,Ajax,Session,会话锁的主题已经讨论了很多,我知道“magic”session\u write\u close()函数。然而 我有一个Ajax调用,它执行相当长的操作(需要几分钟)。为了获得进度信息,我每10秒运行一次Ajax调用。然而,我看到所有这些调用都处于挂起状态,并在主长调用完成后开始处理。在Apache状态下,我看到这些调用处于工作状态 我在第一个脚本中调用了session\u write\u close()。使用Xdebug,我跟踪了脚本的执行情况,并确保最后一次与会话相关的操作调用了session

会话锁的主题已经讨论了很多,我知道“magic”
session\u write\u close()
函数。然而

我有一个Ajax调用,它执行相当长的操作(需要几分钟)。为了获得进度信息,我每10秒运行一次Ajax调用。然而,我看到所有这些调用都处于挂起状态,并在主长调用完成后开始处理。在Apache状态下,我看到这些调用处于工作状态

我在第一个脚本中调用了
session\u write\u close()。使用Xdebug,我跟踪了脚本的执行情况,并确保最后一次与会话相关的操作调用了
session\u write\u close()
,之后没有调用
start\u session()
。但是,所有后续调用仍处于暂停状态


我还可能错过什么?

问题似乎与会话锁定无关。我注意到长时间运行的脚本与MySQL一起消耗了100%的CPU。因为它不是生产服务器,所以我只有一个CPU分配给VM。我已经在虚拟机上添加了第二个CPU,问题已经解决了

session\u write\u close()
中没有“魔力”—它释放锁并关闭会话(意味着如果使用基于文件的会话,它会关闭文件描述符)。我这么说是因为如果你要使用一个函数,了解它的功能是很重要的——永远不要依赖“魔法”!我所说的“魔法”是指它是解决会话锁的一种最受推荐的方法:-)嗯,“魔法”永远不应该被推荐,会话锁是一种解决方案,而不是一个问题我不会用更多的评论来打扰你,但我会再次重申我最初想说的——在使用它之前,你需要知道它是如何工作的(以及为什么)。