PDO beginTransaction在两个单独的脚本中

时间:2011-12-22 00:01:27

标签: php mysql pdo

当两个不同的客户端调用具有pdo :: beginTransaction的相同php函数时会发生什么?

其中一个是失败还是两个php实例可以执行beginTranscation提交块的内容?

IE:

try{
db::beginTransaction();
//queries here
//can two separate php instances go in here at the same time?
db:commit();
}
catch(error e)
{
 db::rollback();
}

1 个答案:

答案 0 :(得分:2)

PHP脚本的每个实例(更准确地说,PDO的每个实例)都会打开与数据库的连接(从DB角度来看,一个新会话)。后端数据库(除少数平面文件之外)支持多个连接,但最终会以不同方式锁定其各自的资源。根据事务中执行的查询,最终可能导致死锁。也就是说,同时打开与数据库的多个连接并不一定会导致陷入僵局。