问题:
我有一个使用 PHP 会话允许用户登录的网站。它工作正常。但是会话过期太快,以至于 1 分钟的不活动将注销用户。
我的环境:
php版本:7.1
服务器:NGINX
框架:CakePHP 3.5
到目前为止我做了什么?
我在 StackOverflow 上完成了每一个解决方案或我得到的任何搜索结果。我在 php.ini 和 CakePHP 配置中都延长了会话超时。
解决方案
经过两三天的研究,我找到了解决办法。在我的 php.ini 中,我找到了一个名为的配置,并为此设置了session.gc_probability
值0
。现在我的会话永远不会过期,除非用户故意注销。
现在我当前的问题是,我不希望我的session.gc_probability
配置为零,因为它不会收集任何垃圾(对此不太确定。如果此信息错误,请纠正我。)。这将导致会话保留数月或数年,这对于服务器来说是真正的垃圾。
我得到了从这里session.gc_probability
给零值的想法
session.gc_divisor coupled with session.gc_probability defines the
probability that the gc (garbage collection) process is started on
every session initialization. The probability is calculated by using
gc_probability/gc_divisor, e.g. 1/100 means there is a 1% chance that
the GC process starts on each request. session.gc_divisor defaults to
100.
我的配置到底有什么问题?是什么导致垃圾收集很快删除我的会话?session.gc_probability
是 1 和session.gc_divisor
1000。我认为概率为 1/1000 的进程不应该每 1 或 2 分钟启动一次。