php会话数据有时会丢失
Posted
技术标签:
【中文标题】php会话数据有时会丢失【英文标题】:php session data sometimes getting lost 【发布时间】:2014-10-04 09:35:31 【问题描述】:我们遇到了 php 会话问题。
有时我们的应用程序会丢失会话。无法确定架构。大多数时候 (99,9%) 不会发生错误。
这是一个非常大的应用程序(超过 7,000 个 PHP 页面)。自问题发生以来,源代码未更改。 PHP 在 IIS 7.5 和 Windows Server 2008 上运行。
会话 ID 已从 cookie 正确传输。受影响的会话文件要么不再可用,要么为空或缺少数据。看起来好像数据已被删除,因为文件结构看起来正确。
会话锁定有效。
会话存储在 SAN 上。我们已经将会话临时保存在内部硬盘上。结果一样。
有人有解决问题的想法吗?
亲切的问候
保罗
附言。对不起我的英语!
【问题讨论】:
该用户的所有会话数据丢失还是仅部分会话数据丢失? 您检查过您的会话超时时间吗?会话通常不会永久保留,并且会在一段时间后被清理。 是的,我检查了会话超时。 有些会话完全丢失,有些是空的,有些只是会话数据的一部分。 也许您保存会话的空间不足?它只是在黑暗中拍摄 【参考方案1】:如果您有会话,请尝试会话处理程序。您可能不想对所有这些页面进行硬编码,但肯定会有一个或多个页面丢失。此外,这归因于浏览器的限制。如果我在 IE 上启动一个会话,然后 Chrome 中的管理员登录将固有地终止第一个会话,因为在恢复 SAN 时不再识别其他会话。顺便说一句,没有提到您的会话超时期限,而是您在谈论(超过 7,000 个 PHP 页面)。我建议您创建一个会话变量并将其传递而不是依赖 cookie,除非您的页面编排发布或更新很多因此您使用 cookie 的原因。不过,您必须首先确保所有变量集都是唯一的。
【讨论】:
【参考方案2】:您应该检查每个页面是否设置了特定会话。这是一种很好的编程技术。你在你的php代码中使用过它吗? 您可以搜索数据丢失的页面,然后在该页面中应用 php 代码。
if(isset($_POST['your_session']))
//body;
else
echo '<script type="text/javascript">'.
'alert("Session not set !");'.
'</script>';
通过此代码,您将代表您的会话收到错误。
【讨论】:
以上是关于php会话数据有时会丢失的主要内容,如果未能解决你的问题,请参考以下文章