2013-05-21 85 views
2

有人知道如何緩存zf2項目中的doctrine2實體。我找不到解釋這個問題的教程或網站。我無法找到任何信息開始定義一個實體文件緩存。ZF2 Doctrine2實體緩存

你們有人有工作聯繫或例子。

感謝

+0

懶得回答[但這會幫助你(https://github.com/doctrine/DoctrineORMModule/issues/136) – Sam

回答

3

你有兩個選擇

  1. 使用原則的本地緩存,例如使用memcache(在memcache塊中,您可以使用任何種類的支持doctrine的緩存,完整列表cache drivers可用)。
  2. 使用Zend/Cache/Storage的doctrine適配器來使用其他地方使用的另一個緩存; DoctrineModule文檔中的adapter is described

作爲版本2的一個例子,我在模塊中有如下配置(實際上遍佈各種配置文件,所以我不能保證複製粘貼逐字將工作)。

'services' => array(
    'factories' => array(
    // Wraps a ZF2 cache storage in a Doctrine compatible way 
    'doctrine.cache.zend.static.local' => function ($services) { 
     return new ZendStorageCache($services->get('cache.static.local')); 
    }, 
), 

'caches' => array(
    // A ZF2 cache, can be configured as you like 
    'cache.static.local' => array(
    'adapter' => 'xcache', 
    'plugins' => array(
     'exception_handler' => array(
     'throw_exceptions' => false, 
     ), 
     'serializer', 
    ),   
), 
), 

'doctrine' => array(
    'configuration' => array(
    'orm_default' => array(
     'metadata_cache' => 'zend.static.local', 
     'query_cache' => 'zend.static.local', 
    ), 
), 
), 

請注意,Doctrine惱人地自動爲「doctrine.cache」加上前綴。到您配置的緩存服務的名稱,因此當我們將「metadata_cache」配置爲「zend.static.local」時,實際的緩存服務必須命名爲「doctrine.cache.zend.static.local」。顯然,你可以稱他們爲你想要的,但是你需要將這個前綴添加到你稱之爲的任何東西。

+0

如果你婉要使用'filesystem'作爲緩存適配器,你應該在設置'key_pattern'=>'/^[\ a-z0-9 _ \ + \ - \ [\]] * $/Di''中更新key_pattern –

+0

是的,你需要適當地配置你的緩存,無論你在做什麼,但我所指的前綴是Doctrine尋找的緩存服務的名稱。 –

+0

我們如何檢查我們所做的配置是否正確?如果緩存正在工作? –

3

要激活文件緩存,你只需要在你的module.config.php

'doctrine' => array(
    'configuration' => array(
      'orm_default' => array(
       'metadata_cache' => 'filesystem', 
       'query_cache' => 'filesystem', 
      ) 
     ), 
    ) 

添加,它會自動創建緩存數據/ DoctrineModule /緩存文件夾

這裏是我的全部學說的配置對於ZF 2.2.4 +學說2

'doctrine' => array(
     'driver' => array(
      'application_entities' => array(
       'class' =>'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
       'cache' => 'array', 
       'paths' => array(__DIR__ . '/../src/Modulename/Entity') 
      ), 
      'orm_default' => array(
       'drivers' => array(
        'Modulename\Entity' => 'application_entities' 
       ), 
      ) 
     ), 
     'configuration' => array(
      'orm_default' => array(
       'metadata_cache' => 'filesystem', 
       'query_cache' => 'filesystem', 
      ) 
     ), 
    ),