首先,我的具体问题。这应该工作吗?
<?php
session_start();
$_SESSION['test']='TEST_CONTENT';
echo '1: ',$_SESSION['test'];
echo '<br>';
session_write_close();
echo '2: ',$_SESSION['test']
?>
现在,一些背景信息。我们有一个带有 Frameset 的 Web 应用程序(不要让我开始......不,没有钱来改变它)并且我们发现在某些情况下我们的 SESSION 变量没有被写入数据库!经过一些艰苦的测试,我们发现两个帧同时加载,虽然它几乎从未发生过,但第一个调用的帧在第二个之后完成。第一个调用的框架是用预先制作的副本覆盖会话(因为在脚本结束时它会写入会话)。
我们现在的解决方案是尽快在第一个调用的帧上调用 session_write_close(),但我们担心仍然能够读取会话变量(100% 确定)。