現在、PHP PDO を使用してデータベースにアクセスしています。それはすべて絶対にうまく機能しています。ただし、サーバーのセットアップにリードレプリカを追加する予定なので、それに応じてコードを調整したいと考えています。
私の現在の行動計画は、データベース資格情報の詳細の配列を保存することです。マスター MySQL データベース用の 1 つの「読み取りと書き込み」セットと、「読み取りレプリカ」用の任意の数の資格情報。
私がやりたいことは、「モード」と呼ばれる PDO クラスにメソッドを追加することです。ここで、「読み取り」または (デフォルト) 「書き込み」などのモードが渡されます。これを渡すことで (例: $dbh->mode("read"); )、ランダム リード レプリカの詳細を検索し (どれが大騒ぎされていないか)、それらの詳細を接続に使用できます。次に、レプリカからの読み取りが完了したら、別の $dbh->mode("default") を実行して、書き込みモードに戻します。これにより、INSERT、UPDATE などを使用できます。
PDO オブジェクトを単純に破棄して新しいオブジェクトを作成することなく、これを行うことはできますか? オブジェクトが既に存在する後で、接続の詳細を簡単に変更できますか?
これまでのところ、次のものがあります(ほとんど何もありませんが、その始まりを考えました)。
Class SwitchablePDO extends PDO
{
public function mode($mode = "default")
{
// Use the credentials for my master read and write server by default
if($mode == "read")
{
// Use one the credentials for my read replicas (randomly choose)
}
}
}
これに関するヘルプをいただければ幸いです。