我在做一个php网站,ini_set('session.gc_maxlifetime',20);//设置session有效期为20s,
发布网友
发布时间:2022-04-06 10:14
我来回答
共4个回答
热心网友
时间:2022-04-06 11:43
在PHP的文档中明确指出,设定session有效期的参数是session.gc_maxlifetime。可以在php.ini文件中,或者通过ini_set()函数来修改这一参数。问题在于,经过多次测试,修改这个参数基本不起作用,session有效期仍然保持24分钟的默认值。
由于PHP的工作机制,它并没有一个daemon线程,来定时地扫描session信息并判断其是否失效。当一个有效请求发生时,PHP会根据全局变量session.gc_probability/session.gc_divisor(同样可以通过php.ini或者ini_set()函数来修改)的值,来决定是否启动一个GC(Garbage Collector)。默认情况下,session.gc_probability = 1,session.gc_divisor =100,也就是说有1%的可能性会启动GC。
GC的工作,就是扫描所有的session信息,用当前时间减去session的最后修改时间(modified date),同session.gc_maxlifetime参数进行比较,如果生存时间已经超过gc_maxlifetime,就把该session删除。
热心网友
时间:2022-04-06 13:01
如楼上众位所说,因为垃圾回收GC的周期原因.
你的更改后session文件重新列队来检测更改时间和生存时间,所以你的刷新并不是马上上效..
所以,在此设置的基础上你可以再设置session_id的生存时间,用户每次更新便会重新刷新这个时间,只要用户不操作在指定时间内,session_id就失效从而达到你要的效果;因为session_id和用户直接挂钩..
且服务器在指定时间内也会把失效的session清除掉....
热心网友
时间:2022-04-06 14:36
不是你每次都会被回收注销的 。 他的垃圾回收机制是在php.ini 里面又设置 。 是有百分比的 不是每次操作都会被回收。session.gc_divisor = 1000 可以调整这个函数 但是不是很建议对他做修改,应为修改的值太小会对服务器内存有影响 。
热心网友
时间:2022-04-06 16:27
session的垃圾回收机制。是默认1000分之一的概率