我如何检查会话是否将在PHP中过期

时间:2018-01-12 17:32:48

标签: php session cookies

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

1 个答案:

答案 0 :(得分:0)

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这样的键值存储来使这更顺畅:对会话之类的易变数据执行大量数据库调用可能不是最佳实践并且可能会创建服务器上的不必要负载,特别是对于许多用户而言。