不知道为什么才200多个ip,3天 session目录下的临时文件有900w了。急切求助!!说明:开发环境:php+smarty+mysql。用到了smarty的静态化!我在想是不是smarty的原因,因为$smarty ->cache_lifetime = 60*60*24;  设置成一天了。seesion 的临时文件有3天左右的!!

解决方案 »

  1.   

    影响session文件的存储时间的是php.ini里的session.gc_maxlifetime以及session.gc_probability/session.gc_divisor
    当你设置session.gc_maxlifetime 时间很长,而且session.gc_probability/session.gc_divisor又特别小时就会产生这种结果!有大量的session数据文件滞留未清理!
      

  2.   

    对的,肯定是你的session的时间过长了,大量的文件被滞留了。
      

  3.   

    session 用默认是24分钟,session.gc_probability/session.gc_divisor  我把这个值改成了50%了,不知道可以不??我估计是缓存影响的,但是用的smarty 模板,不知道重哪里下手了!!谢谢各位了!!
      

  4.   

    另外我看了下session 文件发现很多是空文件,这是怎么回事!!!呵呵,我还是新手谢谢大家了!!
      

  5.   

    对session临时文件进行分层管理会提高效率,看看这个
    http://hi.baidu.com/alexcn2002/blog/item/b625e0ef5d0b6010fdfa3c9f.html
      

  6.   

    10楼的回复作废!
    应该是没打开一个页面就生成了新的session文件!你查看下,是不是每个页面都有显示的声明session_start,然后自己做个实验验证即知!
      

  7.   

    对啊!!在header 用申明的,然后每个页面都开启session_start 了。
    呵呵,是不是不用开启在页面显示中开启session了,系统会默认session吧!!谢谢了
      

  8.   

    因为在header中设置登录了,所有每个页面都要包含session,如果不session_start 的话,就无法验证了!!还有怎么触发回收几率呢??
    我已经设置session.gc_probability/session.gc_divisor 为50%了!!
      

  9.   

    你的php.ini的session.cookie_lifetime是保持默认的0吧?3天滞留900w session文件有点夸张,察看下是否有多份session文件是同一时间生成的,估计是代码的问题
    PS : session.gc_probability/session.gc_divisor设置成50%意味着每个用户进到你的每个页面都有50%的几率进行session gc(文件i/o),这个对于服务器是个压力,基本上保持默认的1/1000是比较好的了.
      

  10.   

    session 没必要设置这么长时间设置1~3个小时够了在配合cookie
      

  11.   

    这样的话 cpu 负载很高吧 把session放到memcache里