2013-09-05 3 views
0

Я думаю, что я ударил блок разума и я просто не могу выбраться из своего пути, чтобы понять эту ситуацию.Кэширование Переводы

Прежде чем идти дальше, одной из моих целей (если возможно) является установка 'config_cache_enabled' => true внутри моего файла application.config.php, чтобы мои конфигурации были объединены вместе, имея возможность кэшировать переводы.

В моей module.config.php я следующее:

'translator' => array(
    'locale'     => 'en', 
    'translation_file_patterns' => array(
     array(
      'type'  => 'gettext', 
      'base_dir' => __DIR__ . '/../language', 
      'pattern'  => '%s.mo', 
      'text_domain' => 'mytextdomain' 
     ) 
    ) 
) 

Переводы работают как и ожидалось. Теперь я хотел бы добавить поддержку кэша, так что я изменить предыдущий пример следующим образом:

'translator' => array(
    'locale'     => 'en', 
    'translation_file_patterns' => array(
     array(
      'type'  => 'gettext', 
      'base_dir' => __DIR__ . '/../language', 
      'pattern'  => '%s.mo', 
      'text_domain' => 'mytextdomain' 
     ) 
    ), 
    'cache' => \Zend\Cache\StorageFactory::factory(array(
     'adapter' => array(
      'name' => 'Filesystem', 
      'options' => array(
       'cache_dir' => __DIR__ . '/../../../data/cache', 
       'ttl'  => '3600' 
      ) 
     ), 
     'plugins' => array(
      array(
       'name' => 'serializer', 
       'options' => array() 
      ), 
      'exception_handler' => array(
       'throw_exceptions' => true 
      ) 
     ) 
    )) 
) 

Это приводит к круговой опорной проблемы из-за закрытия(). Это будет работать, если я установил 'config_cache_enabled' => false, но это не та цель, за которой я работаю.

Можно ли даже делать то, что я пытаюсь? Если да, то любые примеры, которые вы могли бы поделиться, были бы очень полезными.

ответ

3

Вы должны писать только сырые данные в конфигурационных файлах (те, которые будут кэшироваться). Без закрытия, ничего, что нельзя безопасно сериализовать.

Это должно делать то же самое:

'translator' => array(
    ... 
    'cache' => array(
     'adapter' => array(
      'name' => 'Filesystem', 
      'options' => array(
       'cache_dir' => __DIR__ . '/../../../data/cache', 
       'ttl'  => '3600' 
      ) 
     ), 
     'plugins' => array(
      array(
       'name' => 'serializer', 
       'options' => array() 
      ), 
      'exception_handler' => array(
       'throw_exceptions' => true 
      ) 
     ) 
    ) 
) 
+0

Спасибо, это было именно то, что я искал. Фактически, это была единственная вещь, о которой я даже не думал о попытках. – Diemuzi