Symfony 条令';其他查询无法立即访问s的持久化数据

Symfony 条令';其他查询无法立即访问s的持久化数据,symfony,doctrine-orm,task-queue,beanstalkd,Symfony,Doctrine Orm,Task Queue,Beanstalkd,我使用beanstalkd任务队列是为了推迟一些繁重的条令操作,但这可以在任何其他类似的系统(如RabbitMQ等)中复制 客户(生产商)方 工作进程守护进程(同一服务器上长时间运行的进程) 线路 $entityManager->find('\Path\To\Product,$job['Product\u id')返回null 然而 如果我在执行之前加上一个小延迟,比如 sleep(1); $entityManager->find('\Path\To\Product, $job['prod

我使用beanstalkd任务队列是为了推迟一些繁重的条令操作,但这可以在任何其他类似的系统(如RabbitMQ等)中复制

客户(生产商)方 工作进程守护进程(同一服务器上长时间运行的进程) 线路
$entityManager->find('\Path\To\Product,$job['Product\u id')返回
null

然而

如果我在执行之前加上一个小延迟,比如

sleep(1);
$entityManager->find('\Path\To\Product, $job['product_id']);
然后实体按预期返回


为什么没有延迟就无法访问记录?flush()方法是否会阻塞,因此除非将记录插入数据库,否则执行将不会继续?

这可能会有所帮助:这也可能是由于一个尚未提交的事务,或者持久层花费太长时间将事务实际写入驱动器(我觉得这很奇怪)也许为产品创建postPersist侦听器,并尝试从那里“放置”任务?
$entityManager = $this->getDoctrine()->getManager();
while(true){
    $job = json_decode($beanstalkd->reserve());

    if ($job['command'] === 'some:heavy:task'){
        $productEntity = $entityManager->find('\Path\To\Product, $job['product_id']);
    }
}
sleep(1);
$entityManager->find('\Path\To\Product, $job['product_id']);