Я использую PHP и объект PDO для подключения к mysql. У меня есть 3 сервера БД, к которым может подключиться мой php-код. Если я попытаюсь подключиться к серверу БД №1 и сбою подключения, я хотел бы сразу попытаться подключиться к серверу БД №2. Самый низкий, на который я могу установить время ожидания соединения, составляет 1 секунду с приведенным ниже кодом.
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $username, $password,array(PDO::ATTR_TIMEOUT => "1",PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
В идеале я хотел бы установить время ожидания до <50 миллисекунд. Или 0ms, если это возможно. Есть какой-либо способ сделать это?
Это невозможно, потому что основной драйвер MySQL этого не позволит:
Запрос № 60716 : Возможность установить тайм-аут соединения PDO в миллисекундах
Я думаю, что невозможно установить тайм-аут, используя миллисекунды. Обратитесь к php doucmnetation mysql.connect_timeout
:
mysql.connect_timeout:
Время ожидания подключения в секундах. В Linux этот тайм-аут также используется для ожидания первого ответа с сервера.
Кстати, я думаю, что то, что вы собираетесь сделать, звучит немного взломанно для меня. Если у вас есть профессиональные требования, я бы использовал балансировщик нагрузки. Вы можете следовать этому руководству