2010-07-19 20 views
3

我已經設置了Zend_Db_Table_Abstract,因此它使用元數據緩存,然後使用xhprof進行配置以查看它使用了多少內存。Zend_Cache反序列化 - 內存豬?

結果從_setupMetadata到Zend_Cache_Core :: load的34個調用使用了7MB內存,其中大部分內容通過調用反序列化來使用。

的元數據高速緩存的配置是:

resources.cachemanager.db_metadata.frontend.name = Core 
resources.cachemanager.db_metadata.frontend.options.automatic_serialization = true 
resources.cachemanager.db_metadata.frontend.options.lifetime = null 

resources.cachemanager.db_metadata.backend.name = File 
resources.cachemanager.db_metadata.backend.options.cache_dir = APPLICATION_PATH "/../data/cache/db_metadata" 

這是一個常見的問題,還是我失去了一些東西?

+0

它看起來像[表元數據緩存](http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.metadata.caching)使用任何實例[Zend_Cache_Core](http://framework.zend.com/manual/en/zend.cache.frontends.html#zend.cache.frontends.core)。有[很多後端](http://framework.zend.com/manual/en/zend.cache.backends.html)可用。他們執行任何更好,記憶方面? – Charles 2010-07-26 07:52:40

回答

0

由於序列化對象會佔用大量內存。 特別是Zend_Db_ *對象。

在這裏,我們有同樣的問題,我們最終在讓你自己的緩存系統。

你可以做的是定義睡眠/喚醒,以便從Zend_Db_Table_Row_Abstract中移除所有不必要的ivar,但是你必須確保不會破壞類不變量。

好運。 :)