检查prod env中的doctrine设置

时间:2017-11-26 21:38:25

标签: symfony doctrine-orm command

当我执行命令php bin/console doctrine:ensure-production-settings

我有这个结果

query Cache uses a non-persistent cache driver, Doctrine\Common\Cache\ArrayCache.

有人可以解释这个结果是什么以及我必须做什么吗?

2 个答案:

答案 0 :(得分:2)

这只是意味着您没有为Doctrine查询设置持久性缓存。 Doctrine使用缓存将DQL查询转换为SQL,因此在生产环境中缓存它是有意义的,而不必每次都执行相同的工作。

见这里:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html#query-cache

抛出异常的函数在这里:https://github.com/doctrine/doctrine2/blob/2.5/lib/Doctrine/ORM/Configuration.php#L374

,代码如下:

if ($queryCacheImpl instanceof ArrayCache) {
    throw ORMException::queryCacheUsesNonPersistentCache($queryCacheImpl);
}

您应该做的是在生产环境中实施缓存机制,无论是APC,Memcache,Redis等。

答案 1 :(得分:1)

在Symfony 3.4中(示例)

  1. 安装php-apcu扩展名
  2. config_prod.yml上的注释行

    主义:

    orm:
    
        metadata_cache_driver: apc
    
        result_cache_driver: apc
    
        query_cache_driver: apc
    

并正确使用它