|
$mysqlObj1 = new mysqli("10.15.51.78","root","","test")or die("$mysqlObj1 : 连接失败");
$mysqlObj2 = new mysqli("10.15.51.202","root","","test")or die("$mysqlObj2 : 连接失败");
$grid = uniqid("");
$mysqlObj1->query("XA START '$grid'");//准备事务1$mysqlObj2->query("XA START '$grid'");//准备事务2try {
$return = $mysqlObj2->query("UPDATE question SET author='高海峰' WHERE id=10") ;//第一个分支事务准备做的事情,通常他们会记录进日志
if($return == false) {throw new Exception("202数据库更新失败!");
}
$return = $mysqlObj1->query("UPDATE question SET author='高海峰22' WHERE id=11");//第二个分支事务准备做的事情,通常他们会记录进日志
if($return == false) {throw new Exception("78数据库更新失败!");
}
$mysqlObj2->query("XA END '$grid'");
$mysqlObj2->query("XA PREPARE '$grid'");
$mysqlObj1->query("XA END '$grid'");
$mysqlObj1->query("XA PREPARE '$grid'");//通知是否准备提交
$mysqlObj1->query("XA COMMIT '$grid'");//这两个基本同时执行
$mysqlObj2->query("XA COMMIT '$grid'");
} catch (Exception $e) {
$mysqlObj1->query("XA ROLLBACK '$grid'");
$mysqlObj2->query("XA ROLLBACK '$grid'");print $e->getMessage();
}
|
|
|