我们遇到了PHP会话问题。
有时我们的申请会丢失会话。无法确定架构。大多数时候(99,9%)没有发生错误。
这是一个非常大的应用程序(超过7,000个PHP页面)。自问题发生以来,源代码尚未更改。 PHP在IIS 7.5和Windows Server 2008上运行。
会话ID已从cookie正确传输。受影响的会话文件不再可用,或者为空或缺少数据。看起来数据已被删除,因为文件结构看起来正确。
会话锁定有效。
会话存储在SAN上。我们已将会话暂时保存在内部硬盘上。结果相同。
有没有人有解决问题的想法?
亲切的问候
保
PS。抱歉我的英文!
答案 0 :(得分:-1)
如果您有会话尝试会话处理程序。您可能不想对所有这些页面进行硬编码,但肯定会有一个或多个丢失它。此外,这归因于浏览器限制。如果我在IE上启动会话,那么Chrome中的管理员登录将固有地终止第一个会话,因为在还原SAN时不再识别其他会话。 BTW您的会话超时期限未提及,但您的谈论(超过7,000个PHP页面)。我建议你创建一个会话变量并传递它而不是依赖cookie,除非你的页面协调发布或更新很多因此你使用cookie的原因。您必须首先确保所有变量集都是唯一的。
答案 1 :(得分:-1)
如果设置了特定会话,您应该检查每个页面。这是一种很好的编程技术。你在PHP代码中使用过它吗? 您可以搜索数据丢失的页面,然后在该页面中应用php代码。
if(isset($_POST['your_session'])){
//body;
}
else{
echo '<script type="text/javascript">'.
'alert("Session not set !");'.
'</script>';
}
通过此代码,您将代表您的会话收到错误。