Автор Тема: Два коннекта одновременно  (Прочитано 16906 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Два коннекта одновременно
« : 03 Сентября 2002, 17:01:10 »
Есть две разных MySQL`ных базы данных, и один php`шный
скрипт, который из одной бызы берет данные, чуток их модернезирует, а потом кладет в другую. Можно ли открыть два connect`a одновременно с двумя базами из одного скрипта, различая их соответсвенно по connection id?
Не все коту матрица.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #1 : 03 Сентября 2002, 18:15:33 »
Можно.
Только есть у меня подозрение, что ты путаешь серверы mysql, базы данных, и таблицы в базах.

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Два коннекта одновременно
« Ответ #2 : 03 Сентября 2002, 18:39:44 »
наврядли

1) Все пользовательские базы крутятся на одном сервере, но у каждого пользователя своя база \\ логин \\ пароль

2) Есть один аккаунт (host_1.server.ru) со своей БД (server_1). На нем есть система учета неважно чего которая использует базу данных host_1

3) Есть второй аккаунт (host_2.server.ru) со своей БД (server_2), на котором есть вторая версия учета чего.

Так вот, стркутуры (таблицы, связь между таблицами и пр. )разные.  Совсем разные. Но данные из одной базы должны перекочевать в другую, чтобы можно было пользоваться более удобной версией системой учета, но оперировать старыми данными.

И есть php`шный скрипт, который можно запустить из под рута (чтобы ко всему доступ был), и который призван из одной базы цеплять инфу, как можно болье соптимизировать ее под другую базу и в другую же базу впихнуть.

Теперь понятно, зачем два одновременных коннекта на один скрипт?
Не все коту матрица.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #3 : 03 Сентября 2002, 18:57:18 »
понятно, но то, что ты называешь "базами", на самом деле - серверы.
Будь корректнее в формулировках.

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Два коннекта одновременно
« Ответ #4 : 03 Сентября 2002, 19:15:25 »
ок, тогда что такое базы?
Не все коту матрица.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Два коннекта одновременно
« Ответ #5 : 03 Сентября 2002, 20:14:28 »
Croaker
Сам недавно столкнулся с этой проблемой:


$dbconn1
=mysql_connect("host1","login1","pass1");
mysql_select_db("table1",$dbconn1);
$dbconn1=mysql_connect("host2","login2","pass2");
mysql_select_db("table2",$dbconn2);
$result1=mysql_query("select * from table1",$dbconn1);
$result1=mysql_query("select * from table2",$dbconn2);
Вроде доступно
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #6 : 03 Сентября 2002, 20:17:21 »
гы!
ты никогда не работал с mysql?
database - это контейнер, который содержит таблицы.
физически - каталог в data
в РНР выбирается mysql_select_db()
в консоли - use

Оффлайн Stek

  • Обожатель PHP
  • Ветеран
  • *****
  • Сообщений: 532
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.phpdevs.com
Два коннекта одновременно
« Ответ #7 : 03 Сентября 2002, 23:08:53 »
Цитировать

$dbconn1=mysql_connect("host2","login2","pass2");

во втором коннекте должно быть $dbconn2, опечаточка маленькая.
PHP без башни - сделай свою жизнь разнообразнее.
Разбираю скрипты, собираю заново, вытираю пыль с баз данных.

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #8 : 04 Сентября 2002, 01:33:49 »
Цитировать
понятно, но то, что ты называешь "базами", на самом деле - серверы.


В данном случае это не есть существенно.
Но он, вообще-то, называет базами именно базы, которые по совпадению :) на разных серверах.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #9 : 04 Сентября 2002, 02:43:14 »
Доктор, а теперь расскажи нам, как ты коннектишься к database в mysql, и какой connection id тебе возвращает?

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Два коннекта одновременно
« Ответ #10 : 04 Сентября 2002, 10:17:56 »
Собственно маленькая поправочка:
нижеприведенный код был выложен на обозрение тов. РомикЧифу, в ответ на его сообщение "Доктор, а покажи нам как ты к базе ....". Приношу свои извинения уважаемому Доктору, за то, что подумал, что сообщение РомикЧифа относится ко мне, что, в принципе, - логично.

Общий файл:


 
                
include("phps/vars.class.phps");
	
include(
"phps/sql.class.phps");
	

	
$obj = new MysqlClass(); 
	

	
$obj->db_connect_asm();
	

	

	
$obj->db_sql_asm "select * from owner_t limit 1 "
	
$obj->db_query_asm();
	

	
while(
$owner mysql_fetch_array($obj->db_result_asm))
	
{
	
	
print 
$owner[\'fio_contact\']."\\n\\n";
	

	
}
	

	
$obj->db_close_asm(); 




sql.class.phps


class MysqlClass extends VarsClass {
	
	

	
	
var 
$db_host = \'localhost\';
	
	

	
	
var $db_name_asm = "asmodai";
	
	
var $db_login_asm = "asmodai";
	
	
var $db_password_asm = "********";
	
	
var $db_sql_asm = "";
	
	
var $db_result_asm = "";
	
	
var $con_id_asm = "";
	
	

	
	
var $db_name_dkt = "diktator";
	
	
var $db_login_dkt = "diktator";
	
	
var $db_password_dkt = "********";
	
	
var $db_sql_dkt = "";
	
	
var $db_result_dkt = "";
	
	
var $con_id_dkt = "";
	
	

	
	
function db_connect($login, $password, $db_name)
	
	
	
{
	
	
	
	
$con_id = mysql_connect($this->host, $login, $password);
	
	
	
	
mysql_select_db($db_name, $con_id);
	
	
	
	
return $con_id;
	
	
	
}
	
	
	

	
	
function db_connect_asm()
	
	
	
{
	
	
	
	
$this->con_id_asm = $this->db_connect($this->db_login_asm, $this->db_password_asm, $this->db_name_asm);
	
	
	
}
	
	
	

	
	
function db_connect_dkt()
	
	
	
{
	
	
	
	
$this->con_id_dkt = $this->db_connect($this->db_login_dkt, $this->db_password_dkt, $this->db_name_dkt);
	
	
	
}
	
	
	

	
	
function db_query($sql, $con_id) 
	
	
	
{
	
	
	
	
$result = mysql_query($sql, $con_id);
	
	
	
	
return $result;
	
	
	
}
	
	
	

	
	
function db_query_asm() 
	
	
	
{
	
	
	
	
$this->db_result_asm = $this->db_query($this->db_sql_asm, $this->con_id_asm);
	
	
	
}
	
	
	

	
	
function db_query_dkt() 
	
	
	
{
	
	
	
	
$this->db_result_dkt = $this->db_query($this->db_sql_dkt, $this->con_id_dkt);
	
	
	
}
	
	
	

	
	
function num_rows($result)
	
	
	
{
	
	
	
	
$numR = mysql_num_rows($result);
	
	
	
	
return $numR;
	
	
	
}
	
	
	

	
	
function num_fields($result)
	
	
	
{
	
	
	
	
$numF = mysql_num_fields($result);
	
	
	
	
return $numF;
	
	
	
}
	
	
	

	
	
function db_close($con_id)
	
	
	
{
	
	
	
	
mysql_close($con_id);
	
	
	
	
return 0;
	
	
	
}
	
	

	
	
function db_close_asm()
	
	
	
{
	
	
	
	
$this->db_close($this->con_id_asm);
	
	
	
}
	
	
	

	
	
function db_close_dkt()
	
	
	
{
	
	
	
	
$this->db_close($this->con_id_dkt);
	
	
	
}
	
}
« Последнее редактирование: 04 Сентября 2002, 14:35:05 от Croaker »
Не все коту матрица.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #11 : 04 Сентября 2002, 13:31:41 »
Кроакер, спасибо родной! За то, что не пожадничал - выложил свой класс для всеобщего обозрения!
А вы все читайте!
Учитесь использовать ООП!
(только от смеха не помрите по дороге...)

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Два коннекта одновременно
« Ответ #12 : 04 Сентября 2002, 13:39:29 »
RomikChef

Если ты такой умник, то, может  что-нидь конкретное скажешь.
Не все коту матрица.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Два коннекта одновременно
« Ответ #13 : 04 Сентября 2002, 14:25:23 »
Цитировать
$dbconn2, опечаточка маленькая.

именно так
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два коннекта одновременно
« Ответ #14 : 04 Сентября 2002, 14:31:19 »
Ну, как бы, создавать специальные методы для работы с КОНКРЕТНЫМИ базами - это противно самой идеологии ООП - которая АБСТРАГИРУЕТ методы от данных.

Ну, и я, конечно, не понимаю, зачем городить такой класс там, где он вообще не нужен
собственно, запись вида
$query_asm="select * from owner_t limit 1";
$res_asm=mysql_query($query_asm);
отличается от такой
$obj->db_sql_asm = "select * from owner_t limit 1";
$obj->db_query_asm();
лишь тем, что для нее не надо изобретатьспециальный класс...
Хотя, конечно, хозяин-барин.
Но тогда уж примерно так:
$obj->db_sql = "select * from owner_t limit 1 ";
$obj->db_conn = "asm";
$obj->db_query();

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28