我试图在zend framework 2中为配置文件启用缓存:
module.config.php(服务的一部分):
'service_manager' => array(
'factories' => array(
'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',
'doctrine.cache.mycache' => function ($sm) {
$cache = new \Doctrine\Common\Cache\MemcacheCache();
$memcache = new \Memcache();
$memcache->connect('localhost', 11211);
$cache->setMemcache($memcache);
return $cache;
},
),
),
application.config.php(启用配置缓存的一部分):
'module_listener_options' => array(
'module_paths' => array(
'./module',
'./vendor',
),
'config_glob_paths' => array(
'config/autoload/{,*.}{global,local}.php',
),
'config_cache_enabled' => true,
'config_cache_key' => md5('config'),
'module_map_cache_enabled' => true,
'module_map_cache_key' => md5('module_map'),
'cache_dir' => "./data/cache/modulecache",
),
这是我得到的错误:
Fatal error: Call to undefined method Closure::__set_state()
感谢。
答案 0 :(得分:2)
如果配置文件包含匿名函数(在您的情况下为doctrine.cache.mycache
的值),则无法对其进行缓存。您只需将该部分移出配置文件并进入Module.php
课程即可。而是getServiceConfig()
。这应该可以解决问题。