- 论坛徽章:
- 1
|
原帖由 ilovecr 于 2007-10-8 09:52 发表 ![]()
我用memcached,pecl memcache 扩展,然后在php.ini中设置了session.save_handler = memcache ,session.save_path = "tcp://192.168.100.2:11211"
请问memcache是否能够自动回收过期session,释放内存?
事实是他不会自动回收的,这一点正如memcached本身一样,它并不回收,而是任其过期,新的数据写到过期的,把过期的冲掉。
而我们简单查看perl-memcached的源代码可知:
- /* {{{ PS_WRITE_FUNC
- */
- PS_WRITE_FUNC(memcache)
- {
- mmc_pool_t *pool = PS_GET_MOD_DATA();
- if (pool && mmc_pool_store(pool, "set", sizeof("set")-1, key, strlen(key), 0, INI_INT("session.gc_maxlifetime"), val, vallen TSRMLS_CC)) {
- return SUCCESS;
- }
- return FAILURE;
- }
- /* }}} */
复制代码
这个过期,依然使用session原本的设置:
session.gc_maxlifetime
所以,memcached本身要设置可使用内存的大小,还有一些相关语内存不足时的相关替换规则的设置。 |
|