- 論壇徽章:
- 1
|
原帖由 ilovecr 于 2007-10-8 09:52 發(fā)表 ![]()
我用memcached,pecl memcache 擴(kuò)展,然后在php.ini中設(shè)置了session.save_handler = memcache ,session.save_path = "tcp://192.168.100.2:11211"
請問memcache是否能夠自動回收過期session,釋放內(nèi)存?
事實是他不會自動回收的,這一點正如memcached本身一樣,它并不回收,而是任其過期,新的數(shù)據(jù)寫到過期的,把過期的沖掉。
而我們簡單查看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;
- }
- /* }}} */
復(fù)制代碼
這個過期,依然使用session原本的設(shè)置:
session.gc_maxlifetime
所以,memcached本身要設(shè)置可使用內(nèi)存的大小,還有一些相關(guān)語內(nèi)存不足時的相關(guān)替換規(guī)則的設(shè)置。 |
|