0

ユーザーの 1 人に次の問題があります。2 つの異なる場所に 2 つの店舗があり、それぞれの場所に独自のデータベースがありますが、顧客ベースと販売用に登録された資料のリストを共有する必要があります。現時点では、クライアントが新しいクライアントを登録すると、他の場所のデータベースにコピーが作成されます。インターネット接続が不安定なため、すぐに問題が発生します。登録時にインターネットがダウンしている場合、コピーを作成しようとして失敗し、一貫性のないデータベースを保持します。

2 つのデータベースを管理する Pdo トランザクションを介してデータベースを更新することを検討しましたが、データベースごとに PDO の新しいインスタンスが必要なようで、$dbh1= new PDO('mysql:host=xxxx;dbname=test',$user,$pass);両方の更新をコミットする方法がわかりません。この関連する質問を見ると、複数のデータベース間で分散トランザクションを実行する最良の方法は何ですか。トランザクション管理に必要なようです。これは PDO で実現できますか?

4

2 に答える 2

0

インスタンス化できる PDO オブジェクトは 1 つだけです。したがって、クエリを使用してデータベースを切り替えてから、2 番目の DB で同じクエリを実行する必要があります。

最善の策は、トランザクションを実行してから、そのトランザクションをコミットすることです (成功した場合)。次に、次のようなことを行います

$dbh->query('USE otherdb');
$dbh->exec();

次に、2 番目のトランザクションを実行し、それが機能したかどうかに基づいてコミットまたはロールバックします。

これがあなたが求めていることに本当に答えているかどうかはわかりません。

于 2013-10-15T19:01:37.453 に答える