为了账号安全,请及时绑定邮箱和手机立即绑定

当session过期以后这些文件会被回收吗?是通过什么机制回收的呢?

当session过期以后这些文件会被回收吗?是通过什么机制回收的呢?

PHP
jeck猫 2023-04-15 18:14:56
我们都知道php有自己的一个默认session机制,就是你不设置任何session.handler的时候,它会用在临时目录下面存储文件名类似sess_5pjm50b8d40p4175iousv4hqd3的一堆session文件,但是session是有过期时间的,而这些文件显然不能无限增多,那么当session过期以后这些文件会被回收吗?是通过什么机制回收的呢?显然php本身干不了这个事情,因为它的生命周期在脚本执行完就结束了,没有长驻内存的程序来回收这些文件,难道就放任不管吗?
查看完整描述

2 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

session.gcprobability = 1
session.gc
divisor = 100
session.gc_maxlifetime = 1440

这三个配置组合构建服务端session的垃圾回收机制

session.gc_probability与session.gc_divisor构成执行session清理的概率,理论上的解释为服务端定期有一定的概率调用gc函数来对session进行清理,清理的概率为:
gc_probability/gc_divisor 比如:1/100 表示每一个新会话初始化时,有1%的概率会启动垃圾回收程序,清理的标准为session.gc_maxlifetime定义的时间。


查看完整回答
反对 回复 2023-04-18
?
ibeautiful

TA贡献1993条经验 获得超5个赞

在php.ini中可以看到以下配置行

; Define the probability that the '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_probability = 1session.gc_divisor     = 100; After this number of seconds, stored data will be seen as 'garbage' and; cleaned up by the garbage collection process.session.gc_maxlifetime = 1440
从注释可以看出是session垃圾回收的配置。 session.gc_probability/session.gc_divisor 表述有1%的概率回收大于session.gc_maxlifetime时间的过期文件。


查看完整回答
反对 回复 2023-04-18
  • 2 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信