В настоящее время я использую PHP PDO для доступа к моей базе данных. Это все работает абсолютно нормально и денди. Однако я собираюсь добавить реплики чтения в настройки своего сервера, поэтому я хочу соответствующим образом скорректировать свой код.
Мой текущий план действий состоит в том, чтобы хранить массив сведений об учетных данных базы данных. Один набор «чтение и запись» для основной базы данных MySQL и любое количество учетных данных для «реплики чтения».
Что я хочу сделать, так это добавить в класс 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)
}
}
}
Любая помощь по этому поводу будет оценена по достоинству!