2

有人知道如何在 zf2 项目中缓存教义 2 实体吗?我找不到解释这一点的教程或网站。我找不到任何信息来开始定义实体文件缓存。

你们中的一些人有工作链接或示例。

谢谢

4

2 回答 2

3

你有两个选择

  1. 使用学说的本机缓存,例如使用memcache(在memcache 块中,您可以使用任何一种学说支持的缓存,缓存驱动程序的完整列表可用)。
  2. 使用 Zend/Cache/Storage 的学说适配器来使用您在其他地方使用的另一个缓存;适配器在 DoctrineModule 文档中进行了描述。

作为第二版的示例,我在模块中有类似以下配置的内容(实际上分布在各种配置文件中,所以我不能保证逐字复制粘贴会起作用)。

'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”。显然,您可以随心所欲地称呼它们,但是您需要将该前缀添加到您称呼它们的任何名称中。

于 2013-07-27T07:44:20.160 回答
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',
            )
        ),
    ),
于 2013-12-20T21:48:55.687 回答