看起来ob_end_flush()
会导致隐式会话关闭。这是预期的行为?我想答案是'是',但我可以以某种方式阻止它吗?PHP:ob_end_flush()结束会话
下面是我遇到的问题的描述。我使用的是使用自定义会话处理程序的框架,在这种情况下,我认为它不重要,但仅供参考。实际的问题发生在框架代码ob_end_flush()
被调用时。通过记录自定义会话处理程序调用,我注意到在这种情况下会话编写和关闭调用。这太隐含了,我甚至不能用Zend Debugger调试它,只能用error_log记录它。所以,ob_end_flush()
与会话的交互仍然继续(我知道,这可能是错误的,但仍然是这种情况),并且在那种情况下,当前一个会话已经关闭时,开始具有新id的新会话。新会话有新ID,因为此刻cookie尚未设置。所以,结果我得到了两个不同的会议,两个不同的ID。
对我来说最好的解决方案可能是禁用隐含的ob_end_flush()
行为,但我会接受任何答案。
在此先感谢。
'ob_end_flush()'不会结束会话。你可以用小脚本检查它,而不用你所有的框架解决方法 – zerkms 2011-12-22 01:00:12
嗯,真的吗?需要检查它。也许我错了,但我只是在ob_end_flush()上设置断点,点击“step over”键,然后创建新的会话文件(自定义会话write()会这样做)。然而,我不能进入write()调用,因为调试器不会去那里,这就是为什么我认为它是如此隐含。 – Stranger 2011-12-22 02:18:24