2010-07-19 4 views
3

Zend_Db_Table_Abstract를 설정하여 메타 데이터 캐시를 사용하고 xhprof로 프로파일 링하여 사용 된 메모리 양을 확인합니다.Zend_Cache unserialize - 메모리 돼지?

_setupMetadata에서 Zend_Cache_Core :: load로 34 건의 호출이 7MB 메모리를 소모하며, 대부분이 unserialize를 호출하여 사용됩니다.

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

[table metadata caching] (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

답변

0

개체를 직렬화하기 때문에 많은 메모리가 필요합니다. 특히 Zend_Db_ * 개체입니다.

여기에 우리는 같은 문제가 있었고 결국 우리는 당신 자신의 캐시 시스템을 만들게되었습니다.

당신이 할 수있는 일은 sleep/wakeup을 정의하여 Zend_Db_Table_Row_Abstract에서 불필요한 ivar를 제거하지만 클래스 invariant를 깨뜨리지 않아야한다는 것입니다.

행운을 빈다. :)

관련 문제