php.ini 设置默认的 session.gc_maxlifetime 值为1440,我该怎么理解这个值。
当我访问需要登录的网站的时候,一般情况下一直在操作的话登录时不会失效的,当达到一段时间没有操作,那么就需要重新登录了。我看了下网上的一些资料,了解了session的保存方式和回收机制,但还是有个问题理解的不是很清楚。
先不考虑这个回收机制可能造成的问题,也不考虑cookie(假设cookie是一直有效的)。
假设session.gc_maxlifetime设置的就是这个默认值 1440,我第一次登录的时候操作了session,保存了用户信息,之后就没有改变过session。
是不是之后我不管发起了多少次请求,这个session的修改时间依旧是我登录的时间?
是不是超过1440秒之后session就失效了,不管我有没有在这个网站操作?
还是说我一直在这个网站操作,session 的修改时间会更新,也就是说只有超过1440秒不在这个网站活动session才会删除?
还是session不是根据修改时间来删除的,只有在超过一定的时间不活跃之后才会删除?
希望的到一份详细一点的回答,谢谢!
就问题分别回答:
session
的最后修改时间是最后一次请求服务器的时间(无论是页面还是接口)。不一定。
php.ini
文件的默认session.gc_maxlifetime
值为1440
,只是代表session
文件超过1440
秒未访问则被视为垃圾,而不是会立即将其清除。是否清除文件取决于gc
是否被触发,触发几率是针对每一个客户端请求而言的,每个请求都有gc_probability
/gc_divisor
的触发几率。session
文件的最后修改时间来判别是否被视为垃圾,如果被视为垃圾,若gc
被触发,则该session
将被清除。若session
被视为垃圾并未被清除,则此时session
依旧可用。