查看文章 |
PHP的Session
2009-09-14 15:36
对PHP的Session不满很久了,一直以来都缺乏一个很好的Storage。默认的file,不看日志还好,一看总会吓一跳,毛毛多的session_start slow(机器负载很轻、IO也没有任何问题),google一下 session_start slow,抱怨的人还真不少。 存储到Memcache里去吧,Memcache的LRU(slab内LRU,即使Memcache还有空闲内存也会丢失数据)真是一个问题,常常发现Session还没超时,session就找不到需要重新登陆了。咨询了一下张宴,Memcachedb不支持expires,而且还没有办法遍历整个存储,用来作为session的storage就很不合适了。 一直有一个想法,想做一个Session Server,苦于没有时间总是无法付诸实现(小穆也不赞成,认为不利于以后其它人接手)。不得以,还得在 /dev/shm 下建3级目录(16 * 16 * 16)强撑着(可以说,超过99.99%的情况下,使用本地文件作为session的storage都是Ok的,但偶尔会卡一下,而且一卡就会很严重,甚至达到数十秒级)。 使用多级目录存储Session,创建目录的脚本PHP已经自带了。但要注意,一旦使用多级目录存储Session、GC也得自己管理了。换句话说,PHP管杀不管埋,过一两天,find看看,目录下已经有几百万个Session文件了。当然,GC也很容易,比较懒,直接在 crontab 里加一行: |
最近读者: