【问题标题】:php session data sometimes getting lostphp会话数据有时会丢失
【发布时间】:2014-10-04 09:35:31
【问题描述】:

我们遇到了 PHP 会话问题。

有时我们的应用程序会丢失会话。无法确定架构。大多数时候 (99,9%) 不会发生错误。

这是一个非常大的应用程序(超过 7,000 个 PHP 页面)。自问题发生以来,源代码未更改。 PHP 在 IIS 7.5 和 Windows Server 2008 上运行。

会话 ID 已从 cookie 正确传输。受影响的会话文件要么不再可用,要么为空或缺少数据。看起来好像数据已被删除,因为文件结构看起来正确。

会话锁定有效。

会话存储在 SAN 上。我们已经将会话临时保存在内部硬盘上。结果一样。

有人有解决问题的想法吗?

亲切的问候

保罗

附言。对不起我的英语!

【问题讨论】:

  • 该用户的所有会话数据丢失还是仅部分会话数据丢失?
  • 您检查过您的会话超时时间吗?会话通常不会永久保留,并且会在一段时间后被清理。
  • 是的,我检查了会话超时。
  • 有些会话完全丢失,有些是空的,有些只是会话数据的一部分。
  • 也许您保存会话的空间不足?它只是在黑暗中拍摄

标签: php session


【解决方案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>';
    }
    

    通过此代码,您将代表您的会话收到错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 2012-05-09
      • 2012-06-03
      • 1970-01-01
      • 2020-08-24
      相关资源
      最近更新 更多