ZF2 Doctrine2实体缓存

时间:2013-05-21 07:22:28

标签: caching doctrine-orm zend-framework2

有人知道如何在zf2项目中缓存doctrine2实体。我找不到解释这个的教程或网站。我无法找到任何信息来定义实体文件缓存。

你们有人得到了工作链接或例子。

由于

2 个答案:

答案 0 :(得分:3)

您有两个选择

  1. 使用doctrine的本机缓存,例如使用memcache(在memcache块中,您可以使用任何类型的学说支持的缓存,可以使用完整的cache drivers列表。)
  2. 使用doctrine的Zend / Cache / Storage适配器来使用您在其他地方使用的另一个缓存; DoctrineModule docs中的adapter is described
  3. 作为第二版的一个例子,我在模块中有类似下面的配置(实际上分布在各种配置文件中,所以我不能保证复制粘贴逐字会起作用)。

    '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" to" zend.static.local",实际的缓存服务必须命名为" doctrine.cache.zend.static.local"。显然你可以把它们叫做你想要的,但是你需要将这个前缀添加到你称之为的地方。

答案 1 :(得分:3)

要激活文件缓存,您只需添加module.config.php

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

它将在data / DoctrineModule / cache文件夹中自动创建缓存

这是我对ZF 2.2.4 + Doctrine 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',
            )
        ),
    ),