2014-12-02 147 views
1

我試圖啓用的配置文件中的Zend Framework 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() 

謝謝。

回答

1

如果配置文件包含匿名函數(在您的情況下,值爲doctrine.cache.mycache),則無法進行緩存。您只需將該部分移出配置文件,然後移動到您的Module.phpgetServiceConfig()。這應該解決這個問題。

+0

感謝relpy,我已經在Module.php中合併了這個部分,但是我不知道如何在我的module.config.php中替換它,我可以更多地檢驗issu,謝謝。 – user3911183 2014-12-02 16:43:46

+0

如果你已經將它移動到Module.php,只需從配置文件中刪除該部分。 ZF將兩者自動合併。 – 2014-12-02 17:15:10

+0

部分原則沒關係謝謝,我有一個其他問題是,ii得到了適配器的封閉,我已經在module.config和Module中爲它封裝了很多,但是找不到它,能不能指導我這裏plz? – user3911183 2014-12-02 17:52:26