Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 缓存原则结果Symfony2_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php 缓存原则结果Symfony2

Php 缓存原则结果Symfony2,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我正在做一个Symfony2项目。我的项目使用数据库存储数据,使用Doctrine2检索数据 随着数据库中数据的增长,查询变得非常缓慢,整个web应用程序需要大约2分钟才能加载或根本不加载 我能看到自我修复的唯一方法是缓存一些查询结果,但我如何才能做到这一点。除非有不同的方法处理此类问题。您需要在原则中安装和配置缓存驱动程序(result\u cache\u driver在您的情况下很重要)。完成此操作后,您可以通过设置useResultCache(true) 检查 注意:默认情况下,在开发环境

我正在做一个Symfony2项目。我的项目使用数据库存储数据,使用Doctrine2检索数据

随着数据库中数据的增长,查询变得非常缓慢,整个web应用程序需要大约2分钟才能加载或根本不加载


我能看到自我修复的唯一方法是缓存一些查询结果,但我如何才能做到这一点。除非有不同的方法处理此类问题。

您需要在原则中安装和配置缓存驱动程序(
result\u cache\u driver
在您的情况下很重要)。完成此操作后,您可以通过设置
useResultCache(true)

检查

注意:默认情况下,在开发环境中,不会使用结果缓存


编辑:由于您使用的是
DBAL
而不是
ORM
,SymfonyDoctrineBundle不支持这种开箱即用的缓存,但是您可以自己添加这种支持,方法是在开发人员模式下,按照详细指南

,Symfony2会在每个查询上创建一个新的缓存。因此,假设您有许多查询,那么它将逐个缓存所有查询


这比生产模式需要更多的时间,因为在生产模式下,缓存只会存储一次。

Dzieki..我会查找此内容,尝试一下,并在得到一些结果后尽快返回给您。快速提问:此缓存是每个用户会话的缓存还是全局缓存..?或者我可以在负责查询DB
/***@cache(expires=“+5分钟”的类的顶部执行此操作吗,public=true)*/
它将被全局缓存。我不确定你能不能这样做。您可以将缓存生存期设置为UsersUltCacheOK的第二个参数thx您我想我差不多到了测试它的最佳方法是什么缓存正在工作…?是的,我理解,但问题存在于糟糕的开发和生产环境中YOPU必须先清除缓存才能进入生产模式。。!php应用程序/控制台断言:执行了多少SQL查询?您可以在Symfony2工具栏中看到这一点。如果这是一个巨大的数字(比如100),您可以通过在存储库()中创建函数来减少这个数字。
$cachedResult = $doctrine->getManager()
    ->createQueryBuilder()
    ->(...)
    ->useResultCache(true)
    ->(...)