ini PHP会话到期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ini PHP会话到期相关的知识,希望对你有一定的参考价值。

/etc/php5/apache2/php.ini
session.gc_maxlifetime = 172800   # 48 hourssession.
cookie_lifetime = 0

/etc/php5/cli/php.ini
session.gc_maxlifetime = 14400   # 4 hourssession.
cookie_lifetime = 0

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

以上是关于ini PHP会话到期的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中删除 JavaScript 会话 Cookie [重复]

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

PHP 会话在 40 分钟后到期

用户仍在网站上时 PHP 会话到期

php 更改会话到期时间

基于PHP Memcache(d)的会话:是否应禁用垃圾收集?