代码之家  ›  专栏  ›  技术社区  ›  Steve Claridge

PHP中的永久会话

  •  0
  • Steve Claridge  · 技术社区  · 15 年前

    是否可以将PHP会话配置为永不过期?我现在在php.in i中设置了默认的24分钟-我可以在几周内解决这个问题,或者类似的问题,但是我想知道是否可以将它们设置为无限的寿命?

    我想达到类似于stackoverflow的效果:我从不需要在这里登录。这是通过永不过期的会议或其他方式实现的吗?

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

    3 回复  |  直到 15 年前
        1
  •  8
  •   Community basarat    7 年前

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

    在这个stackoverflow问题中包含了一系列关于会话和登录的响应: The Definitive Guide To Website Authentication

    关于您关于何时清理会话的问题,有几个问题 php.ini settings 用于控制何时触发会话的垃圾收集。

        2
  •  1
  •   Azeem.Butt    15 年前

    由于php允许并鼓励您创建自己的会话数据存储处理程序,所以这个问题没有一个正确的答案。

        3
  •  1
  •   Anti Veeranna    15 年前

    第二个问题的答案

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

    • session.gc_probability(默认值1)
    • session.gc除数(默认值100)
    • session.gc_maxlifetime(指定会话被视为垃圾的时间段)

    前2个设置指定垃圾收集进程在启动的概率 会话启动 (在脚本执行之前或刚开始执行时,取决于设置方式)

    在默认配置中,发生这种情况的概率为1%。如果是这样,则清除早于maxlifetime的文件。

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