Я должен задать этот вопрос здесь, так как мой опыт работы с Doctrine 2 не такой большой, и после большого поиска я не смог найти решение.
Моя установка основана на ZF3 и использует Doctrine 2 + Redisкэширование. Кеширование работает, но оно кеширует все и не соответствует моим настройкам из-за нижеприведенного.
Если я установил setCacheable (false) или useResultCache (false) или useQueryCache (false) они не имеют эффекта и все кэшируется. Однако странная часть заключается в том, что если я установлю setResultCacheLifetime (10) или setQueryCacheLifetime (10) , то срок действия кэша истечет через 10 секунд.
Почему это происходит? Разве Doctrine не должна «уважать» мое желание НЕ кэшировать что-либо, когда я этого не хочу?
То же самое происходит, если я использую файловую систему " array " или " "как кеш и все остальное.
Конфигурация Doctrine в local.php (также пробовал module.config.php и тот же результат):
'configuration' => [
'orm_default' => [
'query_cache' => 'my_rediscache',
'result_cache' => 'my_rediscache',
'metadata_cache' => 'my_rediscache',
'hydration_cache' => 'my_rediscache',
],
],
Репозиторий запросов:
namespace Application\Repository;
use Doctrine\ORM\EntityRepository;
class MyOwnEntityRepository extends EntityRepository
{
public function getStuff($some_data)
{
$entityManager = $this->getEntityManager();
$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder->select('...') // my query removed
return $queryBuilder->getQuery()->setCacheable(false)
->useResultCache(false)
->setResultCacheLifetime(10)
->useQueryCache(false)
->setQueryCacheLifetime(10)
->getSingleScalarResult();
}
}
Обычно его называют:
$this->entityManager->getRepository(MyOwnEntity::class)->getStuff($some_data);
Ничего особенного или необычного нет, это должно работать правильно, но по какой-то причине я что-то упускаю
Эта ситуация очень расстраивает, потому что определенные части приложения не нуждаются в кэшировании и требуют актуальных результатов.
Может кто-нибудь, пожалуйста, что я здесь не так делаю? Пожалуйста, сообщите.
Спасибо