我如何检查会话是否将在PHP中过期[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何检查会话是否将在PHP中过期[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我有一个用例,我想检查会话是否会在30秒或60秒内到期。如果是这样我应该能够延长会话时间。我对使用会话或cookie的任何解决方案都很好。我怎么做到这一点。请详细说明您的解决方案。但是我应该在会议结束前知道。

答案

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

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

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

实际会话数据也可以存储在数据库中,但您应该考虑使用像Redis这样的键值存储来使这更顺畅:对像会话之类的易失性数据执行大量数据库调用可能不是最佳实践,并且可能会产生不必要的负载您的服务器,尤其是许多用户。

以上是关于我如何检查会话是否将在PHP中过期[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 AJAX 检查 PHP 会话是不是存在或过期

如何创建将在 Symfony2 中过期/销毁会话的命令控制台?

php会话变量的安全性如何[重复]

PHP - 将会话变量设置为在 30 分钟后过期 [重复]

如何在 django 中查找会话是不是已过期

如何在 Quickblox iOS SDK 中检查会话是不是有效或过期?