Doctrine缓存配置

时间:2018-01-12 11:23:03

标签: php doctrine

在doctrine docs中,看起来我需要可用于元数据缓存的配置对象:

<?php
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Configuration;
use Doctrine\Common\Proxy\ProxyFactory;

// ...

if ($applicationMode == "development") {
    $cache = new \Doctrine\Common\Cache\ArrayCache;
} else {
    $cache = new \Doctrine\Common\Cache\ApcCache;
}

$config = new Configuration;
$config->setMetadataCacheImpl($cache);
$driverImpl = $config->newDefaultAnnotationDriver('/path/to/lib/MyProject/Entities');
$config->setMetadataDriverImpl($driverImpl);

但是,这当前位于composer中zend目录的一个模块中,所以我无法改变它。我想在阵列配置中提供选项:

return array(
    'doctrine' => array(
    'connection' => array(
        'orm_default' => array(
            'params' => array(
                'pdo' => new PDO("connection details")
            ),
            'query_cache'=>new PhpFileCache(), //<- like this
            'metadata_cache'=>new PhpFileCache(), //<- and this
        ),
    ),
),

我知道这是可能的,因为我曾经做过一次,但是,我似乎无法在文档上找到这种方法。当前的文档显示了YAML的设置。

1 个答案:

答案 0 :(得分:0)

我可以在Doctrine实体管理器中设置多个连接,但是我提供了一个配置,因为它设置了在该运行的生命周期内运行一次的东西,或者如果我们安装了一个缓存,例如APC,那么它的生命周期就是释放。

我通过将信息添加到$ config ['doctrine'] ['configuration']来实现这一点,而不是$ config ['doctrine'] ['orm_default / your_connection'] ['configuration']

return array(
'doctrine' => array(
    'connection' => array(
        'orm_default' => array(
            'params' => array(
                'pdo' => new PDO("connection")
            ),
        ),
    ),
    'configuration' => array(
        'orm_default' => array(
            'metadata_cache' => 'filesystem',
            'query_cache' => 'filesystem',
            'result_cache' => 'filesystem'
        ),
    ),
),