Вопрос может не совсем к Друпалу относится... Он больше касается PHP. Возможно ли проводить одновременно чтение из базы Друпала и из посторонней базы? Если да, то как?
Кстати, интересный вопрос. Я пока его решением не задавался, но хотелось бы знать.
Дело в том, что законнектившись к другой базе можно перебить дальнейшие обращения друпала к своей. Или все-таки его DB api прямо использует свой коннект?
База данных на другом сервере? если да, то надо думать в сторону постоянных соединений с ней или пробывать хранить два соединения в двух разных переменных, потом загружать с двух и сливать массив уже в php. Если на одном, то просто указывается префикс бд и дальше уже MySql (другие в теории тоже) сама определяет из какой бд какие колонки брать (так покрайней мере сделана мультисайтовая система в Drupal).
Если задаваться вопросом зачем, то тут масса вариантов, самый распространенный это просто нежелание структурировать бд в структуру таблиц Drupal, дальше можно задуматься о распределении нагрузки и.т.д.
Всем спасибо! Особенно direqtor! Правда на деле я обошолся более простым, но менее красивым решением. У меня были бызы на одном сервере. Поэтому переключаюсь при помощи mysql_select_db($db).
Комментарии
А зачем? Вы скажите, что вы хотите, и, быть может, мы подскажем более простое решение..
Кстати, интересный вопрос. Я пока его решением не задавался, но хотелось бы знать.
Дело в том, что законнектившись к другой базе можно перебить дальнейшие обращения друпала к своей. Или все-таки его DB api прямо использует свой коннект?
База данных на другом сервере? если да, то надо думать в сторону постоянных соединений с ней или пробывать хранить два соединения в двух разных переменных, потом загружать с двух и сливать массив уже в php. Если на одном, то просто указывается префикс бд и дальше уже MySql (другие в теории тоже) сама определяет из какой бд какие колонки брать (так покрайней мере сделана мультисайтовая система в Drupal).
Если задаваться вопросом зачем, то тут масса вариантов, самый распространенный это просто нежелание структурировать бд в структуру таблиц Drupal, дальше можно задуматься о распределении нагрузки и.т.д.
Нет, все-таки я залез в API - [ru-api=db_set_active]
Вроде должно быть так:
В файле settings.php вместо
пишем
'default'=>'mysql://username:password@localhost/databasename',
'custom'=>'mysql://otherusername:otherpassword@otherhost/otherdatabasename',
);
Потом там, где нам нужно (модуль-тема-сниппет), кодим:
db_query('Наш запрос к другой базе');
//Далее требуемый нам код
db_set_active('default');
Кроасота!!! Если я правильно разобрался.
Попробуй проверь - у меня под рукой сервака для теста нет. Если сработает, то рецепт - в анналы.
Antonytm. Спасибо за хороший вопрос. Указанное решение отлично работает.
Эх, давно я заметок не писал... 19457#
Всем спасибо! Особенно direqtor! Правда на деле я обошолся более простым, но менее красивым решением. У меня были бызы на одном сервере. Поэтому переключаюсь при помощи mysql_select_db($db).