2

zf2 プロジェクトで doctrine2 エンティティをキャッシュする方法を知っている人はいますか? これが説明されているチュートリアルやウェブサイトが見つかりません。エンティティ ファイルキャッシュの定義から始めるための情報が見つかりません。

あなたの誰かが実用的なリンクや例を手に入れました。

ありがとう

4

2 に答える 2

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 設定です

'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 に答える
3

2 つのオプションがあります

  1. doctrine のネイティブ キャッシングを使用します。たとえば、 memcacheを使用します (memcache ブロックでは、doctrine がサポートする任意の種類のキャッシュを使用できます。キャッシュ ドライバーの完全なリストが利用可能です)。
  2. Doctrine の Zend/Cache/Storage 用アダプターを使用して、他の場所で使用している別のキャッシュを使用します。アダプターはDoctrineModule docsで説明されています。

バージョン 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」という名前にする必要があります。もちろん、好きな名前を付けることができますが、名前にそのプレフィックスを追加する必要があります。

于 2013-07-27T07:44:20.160 に答える