我们都知道php有自己的一个默认session机制,就是你不设置任何session.handler
的时候,它会用在临时目录下面存储文件名类似sess_5pjm50b8d40p4175iousv4hqd3
的一堆session文件,但是session是有过期时间的,而这些文件显然不能无限增多,那么当session过期以后这些文件会被回收吗?是通过什么机制回收的呢?显然php本身干不了这个事情,因为它的生命周期在脚本执行完就结束了,没有长驻内存的程序来回收这些文件,难道就放任不管吗?
我们都知道php有自己的一个默认session机制,就是你不设置任何session.handler
的时候,它会用在临时目录下面存储文件名类似sess_5pjm50b8d40p4175iousv4hqd3
的一堆session文件,但是session是有过期时间的,而这些文件显然不能无限增多,那么当session过期以后这些文件会被回收吗?是通过什么机制回收的呢?显然php本身干不了这个事情,因为它的生命周期在脚本执行完就结束了,没有长驻内存的程序来回收这些文件,难道就放任不管吗?
session.gcprobability = 1
session.gcdivisor = 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定义的时间。
我写了一篇关于结合http分析php session 本质的文章,有兴趣的话可以看下 - 你必须了解的session的本质
2 回答2.5k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答857 阅读✓ 已解决
2 回答550 阅读✓ 已解决
946 阅读
2 回答583 阅读
在php.ini中可以看到以下配置行
-----------------------------------------------------------------------------
我们看 http://cn.php.net/manual/zh/sessionha... php文档对 session.gc 的说明