2009-10-26 87 views
0

是否可以配置PHP会话永不过期?我目前在php.ini中设置了默认的24分钟 - 我可以将这个时间缩短到几周或类似的东西,但我想知道我是否可以将它们设置为无限生命?PHP中的永久会话

我要实现对#1的类似的效果:我从来没有在这里登录。这是通过一个永不过期的会议或其他方式实现的吗?

另外,作为第二个问题:过期的会话文件如何清理?如果有人创建了一个会话并且从不返回,哪个进程正在清理其过期文件?

回答

8

通常情况下,这似乎是一个永恒的会话是两件事情:一个会话,它很快到期,并包含自动登录令牌很长的寿命的cookie。

有包含在此的StackOverflow问题上的会话和记录,在一个伟大的一系列反应:The Definitive Guide To Website Authentication

关于你提到的有关会话时被清理的问题,也有控制几个php.ini settings当垃圾收集会话被触发。

1

由于PHP都允许并鼓励你创建你自己的会话数据存储处理程序,不存在唯一正确的回答这个问题。

1

回答到次级问题

会话文件清理由以下3 php.ini设置控制:

  • session.gc_probability合(默认值为1)
  • session.gc_divisor(默认值100 )
  • 的session.gc_maxlifetime(指定之后,会话被视为垃圾岁)

前2个设置指定的垃圾收集过程的概率在会话开始正在启动(之前或在你的脚本执行的开始,这取决于你如何设置的东西了)

在默认配置有那么发生这种情况的概率为1%。如果是,则清理比maxlifetime早的文件。

关于你提到的第一个问题 - 为什么不写自定义会话处理程序,数据库存储内部会话(如果有的话)。这样,您就可以在数据库中查看和控制会话。方便:)