我希望 PHP 会话持续至少 x 小时。也就是说,它不应该在过期时间之前被垃圾收集清理。我怎样才能做到这一点?
session.gc_maxlifetime
不是指定过期时间吗?
PHP 手册说:
session.gc_maxlifetime 指定经过多少秒后 数据将被视为“垃圾”并可能被清理。
但是,就我而言,会话的删除时间早于指定时间。
为了确保 PHP 会话持续至少 X 小时,您需要适当配置
session.gc_maxlifetime
和 session.cookie_lifetime
指令。
session.gc_maxlifetime
:该指令指定会话被视为垃圾并可能被垃圾收集器清理之前的最大生命周期(以秒为单位)。您需要将此值设置为至少 X 小时(以秒为单位)。
session.cookie_lifetime
:该指令指定用于跟踪客户端浏览器中的会话 ID 的 cookie 的生命周期。应将其设置为等于或大于 session.gc_maxlifetime 的值,以确保会话 cookie 在整个会话持续时间内保持有效。
session.gc_maxlifetime = 3600 ; X hours in seconds
session.cookie_lifetime = 3600 ; Same value as session.gc_maxlifetime
确保调整值
3600
以匹配所需的持续时间(以秒为单位)(X 小时 * 3600 秒)。
此外,您可能需要调整其他与会话相关的配置选项,例如
session.gc_probability
和session.gc_divisor
来控制垃圾收集被触发的概率。