我目前正在使用 PHP PDO 来访问我的数据库。这一切都工作得很好,花花公子。但是,我将在我的服务器设置中添加只读副本,因此我希望相应地调整我的代码。
我目前的行动计划是存储一组数据库凭据详细信息。为 MySQL 主数据库设置一个“读写”集,为“只读副本”设置任意数量的凭据。
我想做的是向 PDO 类添加一个名为“mode”的方法,其中通过模式传递,例如“read”或(默认)“write”。通过传递它(例如 $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)
}
}
}
任何有关这方面的帮助将不胜感激!