我正在尝试使用 DBAL 连接查询功能在 mysql 中执行“SELECT FOR UPDATE”查询。
我在一个 symfony 项目中,我做了以下测试:
我的控制器中有这两个功能:
/**
* @Route("test", name="test")
*/
public function testAction()
{
$em = $this->getDoctrine()->getManager();
$em->getConnection()->beginTransaction();
try {
$sql = "SELECT *
FROM CommandeDel
WHERE IDCommande = 2 FOR UPDATE";
$m = $em->getConnection()->query($sql)->fetch();
sleep(20);
$em->getConnection()->commit();
}
catch (\Exception $e) {
$em->getConnection()->rollback();
throw $e;
}
return new Response(json_encode($m));
}
/**
* @Route("test2", name="test2")
*/
public function test2Action()
{
$em = $this->getDoctrine()->getManager();
$em->getConnection()->beginTransaction();
$sql = "SELECT *
FROM CommandeDel
WHERE IDCommande = 2";
$m = $em->getConnection()->query($sql)->fetch();
$em->getConnection()->commit();
}
catch (\Exception $e) {
$em->getConnection()->rollback();
throw $e;
}
return new Response(json_encode($m));
}
我在浏览器中调用第一个 url(test),然后在另一个选项卡中调用第二个(test2)。
我的问题是第二个立即返回答案而无需等待 20 秒的延迟......
有人看到我错了吗?
谢谢。