【问题标题】:how do i check if the session is going to expire in php [duplicate]我如何检查会话是否会在php中过期[重复]
【发布时间】:2018-01-12 17:32:48
【问题描述】:

我有一个用例,我想检查会话是否将在 30 秒或 60 秒后到期。如果是这样,我应该能够延长会话。我对任何带有会话或 cookie 的解决方案都很好。我该如何完成。请详细说明您的解决方案。但我应该在会话到期之前知道。

【问题讨论】:

    标签: php session cookies


    【解决方案1】:

    php.ini 设置了 session_maxlifetime,但这并不可靠,因为会话可能持续更长时间,这取决于 PHP 中的垃圾收集器何时被调用。

    我建议将会话元数据存储在数据库中,并使用一列指定到期时间(您可以很好地使用datetime)。一旦用户使用session_start() 调用页面,您可以获取$_COOKIE['my_cookie_name] 值并使用mysqli 之类的库来获取到期时间。您可能还希望将其存储为会话变量以及数据库中,因此您不必一直进行数据库调用以获取会话到期,例如$_SESSION['expiry'] = time() + 60*60*24*365 表示将在 356 天后到期的会话。

    然后,您可以在验证用户请求时使用 session_destroy() 函数调用执行 session_unset() 来清理会话。

    实际的会话数据也可以存储在数据库中,但您应该考虑使用像 Redis 这样的键值对存储来使这更顺畅:对像会话这样的易失性数据进行大量数据库调用可能不是最佳做法,并且可能会创建对您的服务器造成不必要的负载,尤其是在有很多用户的情况下。

    【讨论】:

      猜你喜欢
      • 2016-11-20
      • 2012-05-15
      • 2011-01-05
      • 2017-05-01
      • 2017-11-27
      • 1970-01-01
      • 2013-10-07
      • 2018-04-10
      • 2012-10-18
      相关资源
      最近更新 更多