【问题标题】:Is session.gc_maxlifetime still based on last modified date?session.gc_maxlifetime 是否仍基于上次修改日期?
【发布时间】:2017-05-20 00:25:53
【问题描述】:

根据this 的回答,session.gc_maxlifetime 基于会话的最后修改日期(从 PHP 4.2.3 开始):

注意:如果您使用默认的基于文件的会话处理程序,您的文件系统必须跟踪访问时间 (atime)。 Windows FAT 不支持,因此如果您遇到 FAT 文件系统或任何其他时间跟踪不可用的文件系统,您将不得不想出另一种方法来处理垃圾收集您的会话。从 PHP 4.2.3 开始,它使用 mtime(修改日期)而不是 atime。因此,您不会遇到时间跟踪不可用的文件系统问题。

我在官方文档上找不到任何相关内容,注释似乎消失了,所以这仍然是真的吗?

【问题讨论】:

    标签: php session


    【解决方案1】:

    正确答案是肯定的(PHP 5 - PHP 8),它基于上次修改时间。

    如果php脚本读取会话变量,php运行时会更新修改时间。

    c 源在这里(PHP 7.3 C 源代码):

    【讨论】:

      【解决方案2】:

      不,session.gc_maxlifetime 按定义的时间间隔工作。

      此值(默认为 1440 秒)定义未使用的 PHP 会话将保持活动状态的时间。例如:用户登录,浏览您的应用程序或网站,数小时,数天。没问题。只要他的点击之间的时间不超过1440秒。这是一个超时值。

      PHP 的会话垃圾收集器以 session.gc_probability 除以 session.gc_divisor 定义的概率运行。默认情况下这是 1/100,这意味着以 100 分之一的概率检查上述超时值。

      【讨论】:

      • 那么,是根据上次访问时间还是上次修改时间?
      猜你喜欢
      • 2017-11-30
      • 1970-01-01
      • 2011-04-06
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 2020-09-30
      • 1970-01-01
      相关资源
      最近更新 更多