3

Zend_Db_Table_Abstract をセットアップしてメタデータ キャッシュを使用し、xhprof でプロファイリングして使用メモリ量を確認しました。

_setupMetadata から Zend_Cache_Core::load への 34 回の呼び出しで 7 MB のメモリが使用され、そのほとんどが 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"

これは一般的な問題ですか、それとも何か不足していますか?

4

1 に答える 1

0

オブジェクトをシリアライズしているため、多くのメモリが必要です。特に Zend_Db_* オブジェクト。

ここでも同じ問題が発生し、独自のキャッシュ システムを作成することになりました。

できることは、Zend_Db_Table_Row_Abstract から不要な ivar をすべて削除するように sleep / wakeup を定義することですが、クラスの不変条件を壊さないようにする必要があります。

幸運を。:)

于 2010-07-28T13:49:58.940 に答える