Как создать «переключатель режима» для PHP PDO?

В настоящее время я использую 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)
        }

    }
}

Любая помощь по этому поводу будет оценена по достоинству!

5
задан Schodemeiss 27 July 2012 в 11:45
поделиться