Как определить текущий коннект в MYSQL

Kucovsky

Новичок
Как определить текущий коннект в MYSQL

У меня возникла проблема с определением коннекта в MYSQL .
Я работаю с двумя серверами (точнее иногда подключаю второй)
Как мне определить какой коннект текущий,т.е как найти какой сейчас link_identifier
например для mysql_query ( string query [ link_identifier])
 

Kucovsky

Новичок
Я наверно неправильно сформулировал вопрос

Тогда такой пример
--------------------
$db1 = mysql_connect("server1","user1" ,"psw1" ) OR die(mysql_error());

$db2 = mysql_connect("server2","user2" ,"psw2" ) OR die(mysql_error());

.................................
// В произвольном месте программы нужно узнать куда сейчас идет коннект
mysql_select_db("db");
--------------------------------------
 

Фанат

oncle terrible
Команда форума
туда, куда ты напишешь сам, руками
mysql_select_db("db",$db1); - в $db1
mysql_select_db("db",$db2); - в $db2
 

neko

tеam neko
Kucovsky

или если не укажешь в то соединение которое открыто последним.
 

Kucovsky

Новичок
Не могу я писать руками.
Есть универсальный инклуд ,который включается в огромное число разных файлов и работает с текущим коннектом
проект очень большой и невозможно определить с каким именем идет туда коннект,то ли $db1 то ли $vasya_pupkin_db,
Нужно его как-то вычислить и главное после всех преобразование и переконнектов вернуть первоначальный коннект.
 

Demiurg

Guest
ну тогда перед инклюдом делай коннект. Большие проекты надо разрабатывать с умом, а очень большие - с еще большим умом.
 

Kucovsky

Новичок
Originally posted by Demiurg
ну тогда перед инклюдом делай коннект. Большие проекты надо разрабатывать с умом, а очень большие - с еще большим умом.
Если не знаете,то так и напишите.
Это очень нестандартная проблема и возникла в связи с репликацией базы и перенаправлением всех селектов на один сервер,а update/insert/delete на второй.
 

Фанат

oncle terrible
Команда форума
хехе.
ну конечно же. это форум и персонально Demiurg виноват в твоих проблемах :)
 

Фанат

oncle terrible
Команда форума
Kucovsky
я тебе щас анекдот расскажу

-~{}~ 08.06.04 12:06:

- I want some onion.
- Excuse me, mam, but there is no onion here now.
- But I need onion!
- Excuse me, mam, again. I"m really sorry, but
- You say no onion?
- Yes!
- Hm It was here two days ago!
- Very sorry! No onion now
- But
- OK, mam! Please, would you answer on this question: how many t letter in word potato ?
- Two!
- Yes! Good! And once more: how many t letter in tomato ?
- Two!
- Exactly! You right! And how many words fuck in onion ?
- Hm No fuck in onion!
- Yes! That is what I am trying to explain you: NO FUCKING ONION HERE!!!
 

Гюльчатай

Guest
может это поможет mysql_get_host_info()?
вообще в документации по пхп описываются функции по работе с mysql
 

Kucovsky

Новичок
Originally posted by Гюльчатай
может это поможет mysql_get_host_info()?
вообще в документации по пхп описываются функции по работе с mysql
С определенными "извращениями" это может помочь,можно определить сервер,к которому коннектишься,Так у меня сейчас и работает.Но невозможно восстановить другие параметры (юсер/пассворд) и главное приходится делать ненужный переконнект.

Проблема в том ,что РНР хранит внутри текущий указатель,но как до него долезть?

Теоретически должнл быть что-то такое
-----------------------------------
$current_db =get_current_db_conn();??????????????

if (.....UPDATE,DELETE,INSERT...){
$db2 = mysql_connect("server","user" ,"psw" ) '
mysql_select_db("db");
mysql_query("update .....") ;
}
mysql_select_db("db",$current_db);
--------------------------------------------------

И как же сделать get_current_db_conn
 

ForJest

- свежая кровь
[m]mysql_connect[/m]
обращаем внимание на параметр new_link.
Таким образом если $db1 это ресурс к localhost допустим, а db2 к remote_host то подставляя эти линки в качестве необязательного параметра в функции семейства mysql_* можно точно знать, с каким соединением мы работаем.
 

Kucovsky

Новичок
Originally posted by ForJest
[m]mysql_connect[/m]
обращаем внимание на параметр new_link.
Таким образом если $db1 это ресурс к localhost допустим, а db2 к remote_host то подставляя эти линки в качестве необязательного параметра в функции семейства mysql_* можно точно знать, с каким соединением мы работаем.
В общем случае $db1 и $db2 неизвестны.Так как модуль может быть вызван из произвольного скрипта где вообще может присутствовать некий $DDBB_VASYA_PUPKIN

Очень хитрож..ым методом можно вычислить указатель ,например используя gettype и var_dump ,но фокус в том,что даже зная указатель,невозможно установить текущее соединение на этот указатель.
Т.е можно использовать найденный $current_db например в mysql_select_db("db",$current_db) но сделать коннект действующим по умолчанию можно только с помощью mysql_connect/
Единственно приятное во всем этой мути,что можно испoльзовать mysql_connect сколько угодно раз и система сама определяет ,что если это коннект с уже один раз использоваными параметрами ,то второй раз коннект не делается ,а просто возвращается cтарый указатель и он становится текущим.
Это я сейчас и использовал.
 

Фанат

oncle terrible
Команда форума
Kucovsky
я одного не пойму.
у тебя во всем этом супер-пупер проекте не используется даже завалящего класса для работы с мускулем?
 

Kucovsky

Новичок
Originally posted by Фанат
Kucovsky
я одного не пойму.
у тебя во всем этом супер-пупер проекте не используется даже завалящего класса для работы с мускулем?
Я думал,уже и так понятно,что речь идет о таком классе.:confused: ,который вызывается из разных мест,при этом используются несколько разных коннектов из разных скриптов с разными уровнями доступами и после пернаправления нужно вернуть текущий указатель,независимо из какого места он вызван.
 
Сверху