Работа с несколькими БД на нескольких серверах MySQL

программирование php MySQL базы данных

Итак, квест в следующем:

Надо организовать работу с одного скрипта с несколькими БД на нескольких серверах:

Сервер 1: mysql_connect(host1, username1, password1);
Сервер 2: mysql_connect(host2, username2, password2);
Сервер 3: mysql_connect(host3, username3, password3);

На сервере 1 есть базы: users, logs, transactions
На сервере 2 есть базы: blogs, comments
На сервере 3 есть базы: followers, booking, tracks

Итак задача:

При авторизации данные Пользователя (логин и пароль) сверяются с базой 1 (users), далее из базы 2 (blogs) мы получаем записи пользователя, следом из базы 3 (followers) получаем подписчиков, далее, смотрим в базу 1 (transactions) и сверяем данные некоторых полей с базой 3 (followers & tracks), при совпадении нужных условий заносим в базу 1 (logs) запись.

Пример синтетический, не стоит обсуждать логику действий - она отсутствует по той же причине (надуманность примера).

Вопрос в следующем: Как можно реализовать переключение между серверами и базами если в реальной жизни будет просто несколько одновременных запросов к разным серверам и БД.

Например так:

к серверу1 бд1: mysql_query("SELECT fwef FROM wefq WHERE id = '$id'");
к серверу2 бд2: mysql_query("SELECT qwd FROM wefw WHERE id = '$id'");
к серверу2 бд1: mysql_query("SELECT fwof FROM qdwt WHERE id = '$id'");
к серверу1 бд4: mysql_query("SELECT f3ief FROM wqdi WHERE id = '$id'");
к серверу3 бд2: mysql_query("SELECT ww2 FROM rego WHERE id = '$id'");
к серверу2 бд1: mysql_query("SELECT fwen FROM wefq WHERE id = '$id'");
к серверу3 бд2: mysql_query("SELECT 423i FROM fews WHERE id = '$id'");
к серверу1 бд1: mysql_query("SELECT fxief FROM qdrw WHERE id = '$id'");

Я понимаю что нужно использовать mysql_connect() и mysql_select_db() но где, как и в каком порядке? Точнее как это все оптимизировать учитывая что у нас 3 сервера и 8 бд? куда можно вставить переменные например?

Примечание:
а как быть с тем что на каждом сервере несколько БД? как переключаться "на лету"?
Ответы:
скушай абрикосик
сначала устанавливаешь соединения
$db1 = mysql_connect('ip_address', 'user', 'passw',true);
mysql_select_db('table1', $db1);
А что мешает выбирать необходимую БД, для конкретного соединения, перед запросом?
mysql_select_db('rego', $db1);


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.