php使用memcache来储存session需要注意的地方

php自定义session保存方式必须实现并且注册open、read、write、close、destroy、gc回调方法,这里主要说一下gc,本人在实现gc的时候直接调用了memcache的flush操作,没有做其他的过多操作,如下:

1 function gc ($maxlifetime)
2 {
3 return $memcache_obj->flush();
4 }

用于session的垃圾回收工作,后来发现了每隔一段时间,用户就要重新登录,后来发现是flush操作的问题。

php对于session的垃圾回收是按照一定的几率来的,可配置,比如:1/1000,也就是说访问1000次的时候就有一次session的gc操作,由于memcache的flush是让所有条目,不管过期还是不过期都标记为失效,就导致了本来没到过期时间的session被标记为失效,导致用户重新登录。解决办法就是直接return true,因为memcache有自己的一套过期处理机制,当分配的内存不够用时,将根据LRU算法自动回收一部分内存用户储存新的条目。

posted @ 2012-02-18 17:12  光脚鸭蛋  阅读(269)  评论(0)    收藏  举报