Задать вопрос
Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (2)

Лучшие ответы пользователя

Все ответы (6)
  • Как кэшировать данные выполнения sql запроса в symfony 4 + doctrine?

    @dosim86
    Можете предварительно настроить кеширование в Symfony для Doctrine:
    framework:
        cache:
            pools:
                doctrine.result_cache_pool:
                    adapter: cache.app
    services:
        doctrine.result_cache_provider:
            class: Symfony\Component\Cache\DoctrineProvider
            public: false
            arguments:
            - '@doctrine.result_cache_pool'
    doctrine:
        orm:
            result_cache_driver:
                type: service
                id: doctrine.result_cache_provider

    По умолчанию Symfony использует файловое кеширование для пользовательских данных, поэтому результаты запроса Doctrine также будут хранится в файле. Однако если, например используете Redis, то можно его указать в качестве хранилища кешей по умолчанию:
    framework:
        cache:
            # Redis
            app: cache.adapter.redis
            default_redis_provider: '%env(REDIS_URL)%'

    Далее в нужных запросах просто указывайте Doctrine-е, что результат запроса надо кешировать:
    ...
    ->getQuery()
    ->useResultCache(true) // кешировать результат данного запроса
    //->setResultCacheLifetime(3600) // время жизни кеша при необходимости
    ->getResult()
    Ответ написан
    Комментировать