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

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

jeck猫
浏览 87回答 2
2回答

陪伴而非守候

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

ibeautiful

在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时间的过期文件。
打开App,查看更多内容
随时随地看视频慕课网APP