Автор Тема: Коннект/Дисконнект к БД MySQL  (Прочитано 4205 раз)

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

Оффлайн Inecs

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 48
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.amorphis-dg.da.ru
Коннект/Дисконнект к БД MySQL
« : 21 Марта 2006, 18:23:32 »
Вот возник ещё один вопрос. Есть две подпрограммы:

sub DBconnect {
our $dbh = DBI->connect("DBI:mysql:$DBconf{DBname}:$DBconf{DBserver}:$DBconf{DBport}", $DBconf{DBuser}, $DBconf{DBpassword});
              }

sub DBdisconnect {
our $dbh->disconnect;
                 }

Которые отвечают за коннект к БД.
Коннектимся просто отлично. Но через MySQLFront видно, что после коннекта и запуска подпрограммы дисконнекта остаётся sleep процесс. Вопрос в следующем, как принудительно закрыть коннект.
Или у меня руки кривоваты. Мож подправите, если что не так. Спасибо.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Коннект/Дисконнект к БД MySQL
« Ответ #1 : 21 Марта 2006, 18:34:00 »
perldoc DBI:

$dbh->disconnect  or warn $dbh->errstr;

Цитировать
If you disconnect from a database while you still have active statement handles (e.g., SELECT statement handles that may have more data to fetch), you will get a warning. The warning may indicate that a fetch loop terminated early, perhaps due to an uncaught error. To avoid the warning call the finish method on the active handles.
The documentations is your friend

Оффлайн Inecs

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 48
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.amorphis-dg.da.ru
Коннект/Дисконнект к БД MySQL
« Ответ #2 : 21 Марта 2006, 18:38:54 »
Это чтож получается, это глюк самого MySQLфронта?
Вот блин... А я полчаса голову ломаю.
Кстати, а стоит ли обьявлять $dbh как глобальную переменную?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Коннект/Дисконнект к БД MySQL
« Ответ #3 : 21 Марта 2006, 18:43:10 »
Цитировать
Inecs:
Это чтож получается, это глюк самого MySQLфронта?

Это вы из процитированного куска мана такой вывод сделали?
Поставьте варн и увидите что он вам скажет.

Цитировать
Inecs:
Кстати, а стоит ли обьявлять $dbh как глобальную переменную?

В 99% случаях это можно/нужно делать.
The documentations is your friend

Оффлайн Inecs

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 48
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.amorphis-dg.da.ru
Коннект/Дисконнект к БД MySQL
« Ответ #4 : 21 Марта 2006, 18:48:22 »
Варн поставил сразу. Молчит. Поэтому и сделал такой вывод. Что это глюк Фронта.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Коннект/Дисконнект к БД MySQL
« Ответ #5 : 21 Марта 2006, 19:02:34 »
А что mysqladmin processlist говорит?
The documentations is your friend

Оффлайн cr4ck3r

  • Фанат Perl
  • Постоялец
  • ***
  • Сообщений: 146
  • +0/-0
  • 2
    • Просмотр профиля
    • http://perlmonks.org.ru
Коннект/Дисконнект к БД MySQL
« Ответ #6 : 22 Марта 2006, 12:35:50 »
Из своего опыта, обычно работаю так:
В модуль выносим функцию:
sub DBconnect {
my $DBconf=shift;
return (DBI->connect(" DBI:mysql:$DBconf->{DBname}:$DBconf->{DBserver}:$DBcon
f->{DBport}", $DBconf->{DBuser}, $DBconf->{DBpassword});
}

Из основной программы работаю так:

my $dbh=DBconnect (\\%config);

.....

$dbh->disconnect;

Имхо, так хэндлер базы более контролируем, чем с объявлением типа our.
Хотя это мое субъективное мнение.
Ворота в perl - perlmonks.org.ru

 

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