Php 在ZF2项目中启用条令2缓存
如何在使用Zend Framework 2和Doctrine 2的项目中启用缓存?究竟应该启用什么缓存—条令缓存还是zend缓存 这里是我已经尝试过的,但是没有看到在时间执行中添加的任何差异 module\Application\config\module.config.php 任何帮助、想法或解释都将不胜感激。Php 在ZF2项目中启用条令2缓存,php,caching,zend-framework,doctrine-orm,zend-framework2,Php,Caching,Zend Framework,Doctrine Orm,Zend Framework2,如何在使用Zend Framework 2和Doctrine 2的项目中启用缓存?究竟应该启用什么缓存—条令缓存还是zend缓存 这里是我已经尝试过的,但是没有看到在时间执行中添加的任何差异 module\Application\config\module.config.php 任何帮助、想法或解释都将不胜感激。 谢谢。为了减少不必要的麻烦,当应用程序在生产环境上运行时,一定要在开发时使用array缓存和memcached、redis或apc 您应该将工厂定义放在服务管理器工厂键下,而不是直接放
谢谢。为了减少不必要的麻烦,当应用程序在生产环境上运行时,一定要在开发时使用
array
缓存和memcached
、redis
或apc
您应该将工厂定义放在服务管理器工厂键下,而不是直接放在模块配置数组中
在module.config.php中尝试以下操作:
return [
'doctrine' => [
'configuration' => [
'orm_default' => [
'metadata_cache' => 'mycache',
'query_cache' => 'mycache',
'result_cache' => 'mycache',
'hydration_cache' => 'mycache',
]
],
],
'service_manager' => [
'factories' => [
'doctrine.cache.mycache' => function ($sm) {
$cache = new \Doctrine\Common\Cache\MemcacheCache();
$memcache = new \Memcache();
$memcache->connect('localhost', 11211);
$cache->setMemcache($memcache);
return $cache;
},
],
],
];
此外,我强烈建议将工厂转移到各个工厂类别,始终如此。这样,在的帮助下,您将在生产环境中拥有一个更可读、更可维护和更高效的应用程序
例如:
'service_manager' => [
'factories' => [
'doctrine.cache.mycache' => \App\Memcache\Factory::class // implement FactoryInterface
],
],
];
几年后为未来读者更新:
我强烈建议您调查一下
在为各种条令组件(如实体管理器、配置或缓存)编写自定义专用工厂之前。作为这个库的贡献者,我可以说它很好地满足了我到目前为止所需要的大多数用例的需求。当您确实需要一家专业工厂时,您可以扩展或组合或装饰提供的工厂,并在其上添加您自己的逻辑。谢谢您的回复。。。我现在就去做,但是我有一个问题,我怎么知道缓存在工作?你可以尝试从任何服务定位器感知类的条令配置中获取,例如$config=$this->getServiceLocator()->get('doctrine.configuration.orm_default')
和$cache=$config->getQueryCacheImpl()代码>好的,谢谢。我会尝试一下,然后回来获取反馈。。。非常感谢。这就是我从您的建议中得到的所有内容:条令\Common\Cache\memcache对象([memcache:Doctrine\Common\Cache\memcache:private]=>memcache对象([connection]=>Resource id#146)[命名空间:条令\Common\Cache\CacheProvider:private]=>[namespaceVersion:Doctrine\Common\Cache\Cache\CacheProvider:private]=>1)1文件缓存保存的位置?
'service_manager' => [
'factories' => [
'doctrine.cache.mycache' => \App\Memcache\Factory::class // implement FactoryInterface
],
],
];