session.gc_probability = 100
session.gc_divisor     = 100
session.gc_maxlifetime = 30
请问我已经在php.ini里面设置了以上参数,为什么站点登录后不操作30秒,session文件还在呢??我想30秒后刷新会提示重新登陆,请高手帮忙一下。

解决方案 »

  1.   

    没有,我设置完之后不动30秒,然后刷新页面,看了一下/temp下的文件,那个session的文件还存在,
      

  2.   

    设了 php.ini ,需要重启 apache
      

  3.   

    很遗憾 lz想看到定时之后session就会被消失的可能性似乎不大
    因为gc_maxlifetime只能保证session生存的最短时间,并不能够保存在超过这一时间之后session信息立即会得到删除。而理由是Garbage Collector是按机率启动的lz可参见
    http://cache.baidu.com/c?m=9d78d513d9811bed4fede53f5a57963d440897634dc0a61468a2915fe5664c324271e2cb30531413a5b6682041f14606acb6746536703daade8dcd5dddccca78288b30340740d1070f8059e990177b963d935fe3a519f0ba8768d5f1&p=c673c64ad6b117ff57ebcb204b&user=baidu另外你想要的功能 一般是采取对cookie的有效期加限制的办法
      

  4.   

    你这么设置是没错,但是机制没有清晰.
    默认的session gc不会将当前session文件列入gc计划的,而是把除了当前session的其它session文件列入gc计划。
    你不断地浏览当前页面,不断的发送http header(cookie=session id值)给同一个页面,那么当前session就不会被删除。你应该开两个会话,意思是你用firefox登陆那个页面,再用ie登陆那个页面,过了30秒,刷新ie页面,再回去firefox看看。
      

  5.   

    可以通过程序来。
    首先设置session_save_path到站点的某个目录。
    保存session初始的时间到session里。
    以后每次判断当前时间-5秒是否大于保存的时间,如果大于则删除
    session_save_path下的"sess_"&session_id文件
      

  6.   

    说是说
    session.gc_probability = 100
    session.gc_divisor = 100
    这样的设置在正式服务器是极度不推荐的。
    每次http请求,就处理一次session gc,无疑增大了服务器压力。
      

  7.   

    我也写了一个程序,想法跟10楼的一样,是可行的。
    不够觉得还是用session不够合理,首先11楼的说得很有理,其次要考虑服务器的体积问题。所以用cookie的办法做的还是比较好~~
    先谢谢大家了,最后想问一下你们你有没有PHP相关的讨论群啊??我是新手,我想跟大家学习一下
      

  8.   

    消除session不一定要在配置文件里面设置嘛,试着在程序里面把这项功能完善一下不好吗
    例如登录:登录成功了,来一个session记录时间,然后功能页面也实时记录一个时间,可以设置相应的时间差。来消除session呀。具体思路是这样的。不知道对你有没有帮助
      

  9.   

    程序处理,意味着每次用户刷新页面都要去处理session垃圾,用户一多,意味着你每刷一次页面有可能
    查找的是上千上万的session文件,看它们有无过期.
    如果session默认是file处理,这得多浪费服务器资源呀,你php得经过服务器解释转opcodes,执行,还不如默认的处理方式呢,至少是底层一点的处理方式。