Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 跨多个数据库的PDO事务,是否可能?_Php_Mysql_Pdo - Fatal编程技术网

Php 跨多个数据库的PDO事务,是否可能?

Php 跨多个数据库的PDO事务,是否可能?,php,mysql,pdo,Php,Mysql,Pdo,我对我们的一个用户有以下问题:他们在两个不同的位置有两个商店,每个地方都有自己的数据库,但是,他们需要共享客户群和注册销售的材料列表。目前,我们所做的是当客户机注册一个新客户机时,在另一个位置的数据库上创建一个副本。由于他们的互联网连接不稳定,问题很快就会出现。如果在注册时,互联网关闭,它会尝试复制,失败并携带不一致的数据库 我考虑过通过Pdo事务对数据库进行更新,该事务将管理这两个数据库,但似乎需要一个新的Pdo实例('mysql:host=xxxx;dbname=test',$user,$p

我对我们的一个用户有以下问题:他们在两个不同的位置有两个商店,每个地方都有自己的数据库,但是,他们需要共享客户群和注册销售的材料列表。目前,我们所做的是当客户机注册一个新客户机时,在另一个位置的数据库上创建一个副本。由于他们的互联网连接不稳定,问题很快就会出现。如果在注册时,互联网关闭,它会尝试复制,失败并携带不一致的数据库


我考虑过通过Pdo事务对数据库进行更新,该事务将管理这两个数据库,但似乎需要一个新的Pdo实例('mysql:host=xxxx;dbname=test',$user,$pass) 不,PDO不能做任何远程类似分布式事务的事情(这在任何情况下都是一个非常棘手的问题,没有银弹存在)

一般来说,在存在网络分区(即参与者从网络上脱落)的情况下,可以证明您无法同时实现一致性和可用性(保证对查询的响应)——请参阅


似乎您需要重新评估您的需求,并根据分析结果设计解决方案;为了水平扩展数据处理或存储,您必须从第一天开始考虑扩展并相应地计划。

您只能实例化单个PDO对象。因此,您需要使用查询切换数据库,然后在第二个数据库中执行相同的查询

最好的办法是执行一个事务,然后提交该事务(如果成功)。然后做一些类似的事情

$dbh->query('USE otherdb');
$dbh->exec();
然后执行第二个事务,并根据它是否工作来提交或回滚


我不确定这是否真的回答了您的问题。

这可能太复杂了,无法在这里回答,我的解决方案最终需要改变体系结构(即水平可扩展的数据存储、服务队列/通知系统或其他更合适的体系结构)。您应该开始了解实际的一致性要求。事务,通常一次只能在一台服务器或集群上工作。