Zend_Cache unserialize - боров памяти? - PullRequest
3 голосов
/ 19 июля 2010

Я настроил Zend_Db_Table_Abstract, чтобы он использовал кеш метаданных, а затем профилировал его с помощью xhprof, чтобы посмотреть, сколько памяти он использует.

Получается 34 вызова из _setupMetadata в Zend_Cache_Core :: load занимает 7 МБ памяти, большая часть которой используется при вызове 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"

Это общая проблема, или я что-то упустил?

1 Ответ

0 голосов
/ 28 июля 2010

Поскольку вы сериализуете объект, это занимает много памяти. Особенно объект Zend_Db_ *.

Здесь мы столкнулись с той же проблемой, и в итоге мы создали собственную систему кэширования.

Что вы можете сделать, это определить режим сна / пробуждения, чтобы вы удалили весь ненужный ивар из Zend_Db_Table_Row_Abstract, но вы должны убедиться, что он не нарушает инвариант класса.

Удачи. :)

...