我用的是wampserver搭建的本地服务器,做了一个后台,但发现登录之后,SESSION一直是有效的,不会超时,想请问一下,在没有操作的情况下,PHP中SESSION能保持多少时间?另外在PHP中如何设置SESSION的超时时间?

解决方案 »

  1.   


    要实现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 的定期清除效果比较好
      

  2.   

    PHP5下PHP.INI中SESSION配置http://www.5iphp.com/zh-hans/content/374.html