2

我正在尝试为 zend 框架 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()

谢谢。

4

1 回答 1

2

如果配置文件包含匿名函数(在您的情况下为 的值),则无法缓存配置文件 doctrine.cache.mycache。您只需要将该部分从配置文件中移出并移到您的Module.php班级中getServiceConfig()。那应该可以解决问题。

于 2014-12-02T16:04:10.877 回答