zend framework 2 - 缓存配置文件

时间:2014-12-02 14:34:08

标签: php zend-framework2 zend-framework-modules

我试图在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()

感谢。

1 个答案:

答案 0 :(得分:2)

如果配置文件包含匿名函数(在您的情况下为doctrine.cache.mycache的值),则无法对其进行缓存。您只需将该部分移出配置文件并进入Module.php课程即可。而是getServiceConfig()。这应该可以解决问题。