Php 使rabbitmq使用者| Symfony2中的ORM缓存无效

Php 使rabbitmq使用者| Symfony2中的ORM缓存无效,php,mysql,symfony,doctrine-orm,rabbitmq,Php,Mysql,Symfony,Doctrine Orm,Rabbitmq,我在symfony2应用程序中使用 该应用程序一次消耗10条消息,并使用doctrine querybuilder(消息数据中提供了过滤器)从mysql数据库收集数据。 Cachingsystem是APC。 考虑查询的剥离代码。 $qb = $this->entityManager ->getRepository('My\Entity') ->createQueryBuilder(); $qb ->select('sum(this) as this

我在symfony2应用程序中使用 该应用程序一次消耗10条消息,并使用doctrine querybuilder(消息数据中提供了过滤器)从mysql数据库收集数据。 Cachingsystem是APC。 考虑查询

的剥离代码。
$qb = $this->entityManager
    ->getRepository('My\Entity')
    ->createQueryBuilder();
$qb
    ->select('sum(this) as this, sum(that) as that')
    ->andWhere('field in (:values)')
    ->setParameter('values', $filterValues);
$result = $qb
    ->getQuery()
    ->setSingleResult();
此查询为不同的筛选器值返回10倍相同的数据。当消费者重新启动并使用接下来的10条消息时,我再次得到10次不同的结果。 我认为条令缓存对此负责,并尝试如下方式使缓存无效:

$qb = $this->entityManager
    ->getRepository('My\Entity')
    ->createQueryBuilder();
$qb
    ->select('sum(this) as this, sum(that) as that')
    ->andWhere('field in (:values)')
    ->setParameter('values', $filterValues);
$result = $qb
    ->getQuery()
    ->setResultCacheLifetime(0)
    ->setSingleResult();
但没有效果。 我可以通过一次只消耗一条消息来解决这个问题,但这会使我的应用程序速度降低到一个不可接受的程度

谁能给我指一下正确的方向吗

谢谢,
jojo

这归结为我的代码中的一个错误。 我不知何故认为,消费者在每次消费信息后都会重新关联。那不是真的!在我的查询服务中,我将一些查询的结果保存在类属性中。然后,代码是这样的:

<?php
if (null === $this->queryResult) {
    $this->doQuery();
} else {
    return $this->queryResult
}

我们也在使用oldsound,您能否尝试启动10个消费者,每个消费者一次只消费1条消息?我认为您可以在查询中使用这些信息:setCacheable(bool)、useResultCache(bool)