我目前正在使用PHP PDO访问我的数据库,这一切都非常完美。但是,我将在服务器上添加读取副本,因此我希望相应地调整我的代码。
我的当前计划是存储一个包含数据库凭据详细信息的数组。一个是“读和写”用于主MySQL数据库,另外可以有多个“读副本”的凭据。
我想做的是向PDO类中添加一个名为“mode”的方法,通过传递一个模式,例如“读”或(默认)“写”。通过传递这个模式(例如 $dbh->mode("read"); ),它可以查找随机读取副本的详细信息(无论哪个都行),并使用这些详细信息进行连接。然后,一旦从我的副本中读取完成,再使用 $dbh->mode("default") 将其重新设置为写模式,以便可以使用INSERT、UPDATE等操作。
这是否可以在不仅仅是销毁PDO对象并创建一个新对象的情况下进行?连接详细信息是否可以在对象已经存在之后简单地更改?
到目前为止,我只有以下内容(几乎没有什么内容,但认为这是一个开始)。
我的当前计划是存储一个包含数据库凭据详细信息的数组。一个是“读和写”用于主MySQL数据库,另外可以有多个“读副本”的凭据。
我想做的是向PDO类中添加一个名为“mode”的方法,通过传递一个模式,例如“读”或(默认)“写”。通过传递这个模式(例如 $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)
}
}
}
希望能得到关于此事的任何帮助!