【更新】linux服务器tmp目录爆满并产生大量sess_*文件
继上次文章内容《linux服务器tmp目录爆满并产生大量sess_*文件 》中说到了linux的tmp目录下产生了大量的sess_开头的文件,数量很多。今天继续来说一下。
一、sess_文件
这些属于用户登录凭证文件。默认情况下会存放在临时缓存目录中,我们可以使用session.save_path来设置存放目录或使用session_save_path()让每个站点的session保存到一个专用目录;
二、PHP回收机制
用当前时间减去session最后修改的时间,同session.gc_maxlifetime参数进行比较,如果生存时间超过gc_maxlifetime(默认24分钟),就将该session删除。
当一个有效的请求发生时,PHP 会根据全局变量 session.gc_probability和session.gc_divisor的值,来决定是否启用一个GC, 在默认情况下,
session.gc_probability = 1session.gc_divisor = 100
也就是说有1%的可能性启动GC(也就是说100个请求中只有一个gc会伴随100个中的某个请求而启动).
但是,如果你Web服务器有多个站点,多个站点时,GC处理session可能会出现意想不到的结果,原因就是:GC在工作时,并不会区分不同站点的session.
三、session的保存格式
默认为file,定义session在服务端的保存方式,file意为把sesion保存到一个临时文件里,如果我们想自定义别的方式保存(比如用数据库),则需要把该项设置为user;但是不建议将其保存在数据库中,我们可以将其保存在redis中。
设置方式
session.save_handler = redis session.save_path = “tcp://127.0.0.1:6379?auth=redisauthkey″
如果没有密码,可直接到端口号即可。