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

问题描述 投票:-3回答:1

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

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

php session cookies
1个回答
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这样的键值存储来使这更顺畅:对像会话之类的易失性数据执行大量数据库调用可能不是最佳实践,并且可能会产生不必要的负载您的服务器,尤其是许多用户。

© www.soinside.com 2019 - 2024. All rights reserved.