Home  >  Article  >  Backend Development  >  关于session的垃圾回收机制有关问题

关于session的垃圾回收机制有关问题

WBOY
WBOYOriginal
2016-06-13 13:36:431150browse

关于session的垃圾回收机制问题!

seession.gc_maxlifetime=1440;
seesion.gc_probalility=1;
session.gc_divisor=1000;

上述我的理解是千分之1的用户才可能用到session;但是如果是千分之1的几率
,那就不对了,session怎么进行啊??求一个满意的解释。。

------解决方案--------------------
引用的一段解释:
PHP处理session的原理也不例外,但是在具体的实现方式上,却与众不同。这是因为,由于PHP的工作机制,它并没有一个后台线程,来定时地扫描session信息并判断其是否失效。它的解决之道是,当一个有效请求发生时,PHP会根据某个概率,来决定是否调用一个GC(Garbage Collector)。GC的工作,就是扫描所有的session信息,用当前时间减去session的最后修改时间(modified date),同配置参数(configuration option)session.gc_maxlifetime的值进行比较,如果生存时间已经超过gc_maxlifetime,就把该session删除。这是很容易理解的,因为如果每次请求都要调用GC代码,那么PHP的效率就会低得令人吃不消了。这个概率取决于配置参数 session.gc_probability/session.gc_divisor的值(可以通过php.ini或者ini_set()函数来修改)。默认情况下,session.gc_probability = 1,session.gc_divisor=100,也就是说有1%的可能性会启动GC。
这三个参数,session.gc_maxlifetime/session.gc_probability /session.gc_divisor都可以通过php.ini或者ini_set()函数来修改。但要记得,如果使用ini_set()函数的话,必须在每一个页面的开始处都调用ini_set()。


阅读全文:http://koda.iteye.com/blog/319605

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn