я пытаюсь включить кэш для файлов конфигурации в 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()
Благодарю.
Файлы конфигурации не могут быть кэшированы, если они содержат анонимные функции (в вашем случае значение для doctrine.cache.mycache
). Вам нужно будет переместить только эту часть из файла конфигурации в ваш Module.php
учебный класс’ getServiceConfig()
вместо. Это должно решить проблему.
Других решений пока нет …