当我执行命令php bin/console doctrine:ensure-production-settings
我有这个结果
query Cache uses a non-persistent cache driver, Doctrine\Common\Cache\ArrayCache.
有人可以解释这个结果是什么以及我必须做什么吗?
答案 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中(示例)
config_prod.yml上的注释行
主义:
orm:
metadata_cache_driver: apc
result_cache_driver: apc
query_cache_driver: apc
并正确使用它