1

ZF2 (Zend Framework2) で Doctrine2 を使用しています。http://www.jasongrimes.org/2012/01/using-doctrine-2-in-zend-framework-2/に従って
、Doctrine 内でアノテーションを使用しています。デフォルトでアノテーションがキャッシュされているかどうかを知る必要があります。どこで、そうでなければどのようにそれらをキャッシュできますか。

Symfony2/Doctrine2 が注釈データをキャッシュしていることは知っていますが、Zend2 でそれを行うにはどうすればよいですか?

4

1 に答える 1

2

注釈キャッシュに memcache を使用する例は (module.config.php) のようになります。

'service_manager' => array(

    'factories' => array(
        'doctrine.cache.my_memcache' => function(\Zend\ServiceManager\ServiceManager $sm) {
            $cache = new \Doctrine\Common\Cache\MemcacheCache();
            $memcache = new \Memcache();
            $memcache->connect('localhost', 11211);
            $cache->setMemcache($memcache);

            return $cache;
        }
    )

これにより、doctrine の基本的な memcache オブジェクトが作成されます。その後、次のようなアノテーションにこのキャッシュを使用するように doctrine に指示する必要があります (ここでも module.config.php):

'doctrine' => array(
    'driver' => array(
        __NAMESPACE__ . '_driver' => array(
            'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
            'cache' => 'my_memcache', // <- this points to the doctrine.cache.my_memcache factory we created above
            'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
        ),
        'orm_default' => array(
            'drivers' => array(
                __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
            ),
        ),
    ),
),

または、doctrine の配列キャッシュを使用できます。単純に 'cache' => 'my_memcache' を 'cache' => 'array' に変更します (私の知る限り、これがデフォルトのはずです。お役に立てば幸いです!

于 2013-05-30T20:38:52.707 に答える