21,886
社区成员
发帖
与我相关
我的任务
分享
要实现Session的永久生命期,首先需要了解一下php.ini关于Session的相关设置(打开php.ini文件,在“[Session]”部分):
引用内容
1、session.use_cookies:默认的值是“1”,代表SessionID使用Cookie来传递,反之就是使用Query_String来传递;
2、session.name:这个就是SessionID储存的变量名称,可能是Cookie,也可能是Query_String来传递,默认值是“PHPSESSID”;
3、session.cookie_lifetime:这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以Session不能永久使用!
4、session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除!
永久Session的原理和步骤。
1、把“session.use_cookies”设置为1,打开Cookie储存SessionID,不过默认就是1,一般不用修改;
2、把“session.cookie_lifetime”改为正无穷(当然没有正无穷的参数,不过999999999和正无穷也没有什么区别);
3、把“session.gc_maxlifetime”设置为和“session.cookie_lifetime”一样的时间;
session.cookie_lifetime 设定为一个值 (例如 1000 秒)后,相应的 session.gc_maxlifetime 也需要设置为 1000 ,才能方便清除?
因为测试过几次,将 session.cookie_lifetime 设置为较小的数值(例如 100秒)的时候,即使将“清除几率”变为 100% , 也不能在这个较小数值的时间内将 session 清除。因此怀疑是 session.gc_maxlifetime 设置了较大的一个值,使得系统需要更多的时间将 session 认定为 garbage, 即使这个 session 实质上已经过了它的 lifetime。
几经测试,在统一了 session.cookie_lifetime 和 session.gc_maxlifetime 后, session 的定期清除效果比较好