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