【发布时间】:2011-04-07 21:29:47
【问题描述】:
关于 PHP 中的 Session Expiration 的问题。
如果该用户有一段时间不活动(出于测试目的,5 秒),我需要我的服务器丢弃会话信息。
我查看了this question,特别是 Gumbo 的答案(+28 票),我一直想知道这个答案对于非活跃用户的可行性。在我的网站上,我已经实施了这个建议并且它工作正常,只要用户在会话过期后至少请求一次数据。但是不活跃用户的问题是他们不请求新数据。所以过期代码永远不会被调用。
我一直在我的 PHP.ini 中查看session.gc_maxlife 和相关参数,但我无法按照我想要的方式进行这项工作。
对这个问题有什么建议吗?
【问题讨论】:
-
如果您不想在下一个请求时销毁过期会话,您希望发生什么?
-
我认为这里没有问题,除非您依赖到期代码进行某种额外的清理。如果是这种情况,那么 cron 脚本可能是更好的选择?
-
我确实希望它被销毁,但不想依赖用户在会话实际被销毁之前发出另一个请求。
-
您误会了:垃圾收集适用于 any 用户为所有过期用户触发它。特定用户无需在其数据被清除之前拨打过期电话。
-
我要感谢大家,尤其是 Gumbo 和 Saul 的回复。由于实际上确实需要在会话到期时管理一些数据库更改,因此我选择了 Saul 的答案。 Gumbo 的回答也有帮助,但它让我意识到如果不运行额外的作业,我将无法看到会话实际上已过期,该作业也可以修改数据库以反映过期的会话。