是否可以将PHP会话配置为永不过期?我目前在php.ini中设置了默认的24分钟 - 我可以将其重置几周或类似的东西,但我想知道我是否可以将它们设置为无限生命?
我想实现与Stackoverflow类似的效果:我从来没有必要在这里登录。这是通过永不过期的会话或其他方式在SO上实现的吗?
另外,作为第二个问题:过期的会话文件如何清理?如果有人创建了一个会话并且永远不会返回,那么哪个进程正在清理他们过期的文件?
答案 0 :(得分:8)
通常情况下,似乎是一个永恒的会话是两件事:一个很快就会到期的会话,以及一个包含自动登录令牌的非常长寿的cookie。
此StackOverflow问题中包含有关会话和登录的大量回复: The Definitive Guide To Website Authentication
关于何时清理会话的问题,有几个php.ini settings用于控制何时触发会话垃圾回收。
答案 1 :(得分:1)
由于PHP都允许并鼓励您创建自己的会话数据存储处理程序,因此这个问题没有一个正确答案。
答案 2 :(得分:1)
回答次要问题
会话文件清理由以下3个php.ini设置控制:
前2个设置指定在会话开始(在脚本执行之前或开始时,取决于您如何设置)启动垃圾收集过程的概率
在默认配置中,发生这种情况的概率为1%。如果是,则清除早于maxlifetime的文件。
至于你的第一个问题 - 为什么不写一个自定义会话处理程序,它将会话存储在数据库中(如果你有的话)。这样,您就可以直接从数据库中查看和控制会话。得心应手:)