当两个不同的客户端调用具有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();
}
答案 0 :(得分:2)
PHP脚本的每个实例(更准确地说,PDO的每个实例)都会打开与数据库的连接(从DB角度来看,一个新会话)。后端数据库(除少数平面文件之外)支持多个连接,但最终会以不同方式锁定其各自的资源。根据事务中执行的查询,最终可能导致死锁。也就是说,同时打开与数据库的多个连接并不一定会导致陷入僵局。