我正在使用ZF2和Doctrine的ODM模块。
问题:
在每个请求中,我的代理和水合器正在重新生成。这会导致随机错误。有关详细信息,请参阅https://github.com/doctrine/mongodb-odm/issues/484。
在Doctrine关于元数据缓存的文档之后http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/metadata-drivers.html
我明确将ApcCache设置为默认的元数据缓存实现。
调试我的文档管理器我得到以下内容:
[mongoCmd] => $
[retryConnect] => 0
[retryQuery] => 0
[autoGenerateProxyClasses] => 0
[proxyDir] => data/DoctrineMongoODMModule/Proxy
[proxyNamespace] => DoctrineMongoODMModule\Proxy
[autoGenerateHydratorClasses] => 0
[hydratorDir] => data/DoctrineMongoODMModule/Hydrator
[hydratorNamespace] => DoctrineMongoODMModule\Hydrator
[defaultDB] =>
[metadataCacheImpl] => Doctrine\Common\Cache\ApcCache Object
因此,自动生成代理和自动生成加油器都关闭,ApcCache对象显然设置为metadataCacheImplementation,但不是从缓存的类中读取元数据,而是在每个后续请求中重新生成类。
关于如何强制Doctrine从缓存中读取元数据而不是在每个请求上创建新类的任何想法。
感谢。
马尔科