【问题标题】:Symfony 2 cache Doctrine query results [duplicate]Symfony 2缓存Doctrine查询结果[重复]
【发布时间】:2015-04-14 10:03:29
【问题描述】:

我正在使用 Doctrine 进行 Symfony2 项目。我想通过向查询添加缓存来优化 API 性能。

我看过几个选项,例如:

  • Symfony 注释缓存
  • 学说缓存
  • 内存缓存

不确定我应该选择哪一个,但对我来说,在 Doctrine 级别缓存数据似乎是最合适的。

说我希望有人帮助我或指导我如何设置 Doctrine 缓存并解释它的具体工作原理。

即我有这个查询:

class QueryFactory

    protected $connect;

    public function __construct(Connection $connection)
    {
        $this->connect = $connection;
    }

    private function myQuery()
    {
        return $this->connect->createQueryBuilder()
            ->select('user_id')
            ->from('users', 'u')
            ->where('u.user_id = 2');
    }
}

如何向此查询添加缓存?我需要向use注入任何我需要的东西吗?

【问题讨论】:

    标签: php symfony caching doctrine-orm


    【解决方案1】:

    doctrine 中缓存查询或结果,您可以执行以下操作:

    private function myQuery()
    {
        return $this->connect->createQueryBuilder()
            ->select('user_id')
            ->from('users', 'u')
            ->where('u.user_id = 2')
            ->getQuery()
            ->useQueryCache(true)    // here
            ->useResultCache(true);  // and here
    }
    

    查看doc 了解有关这些方法的更多信息。这将使 your 缓存驱动程序正常工作 - 与您使用的驱动程序无关。

    要将Symfony 配置为使用特定的查询驱动程序,您需要调整config.yml 中的设置 - 检查this 以查看完整的选项列表。缓存中重要的是(这是apc 配置示例):

    entity_managers:
            some_em:
                query_cache_driver: apc
                metadata_cache_driver: apc
                result_cache_driver: apc
    

    您可能还想查看 thisthis 博客条目

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    相关资源
    最近更新 更多