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 ( config のキャッシュを有効にする部分):

'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 に答える