perl+mysql
В одном скрипте может быть несколько обращений к базе.
Что практичней:
1)В конструкторе делать connect, а потом из функций делать do/execute, в деструкторе делать disconnect
2)В каждой функции делать connect, do, disconnect
?
Я лично склоняюсь к первому варианту, но может есть какие-то особенности?
Здравствуйте, loot, Вы писали:
L>perl+mysql L>В одном скрипте может быть несколько обращений к базе. L>Что практичней: L>1)В конструкторе делать connect, а потом из функций делать do/execute, в деструкторе делать disconnect L>2)В каждой функции делать connect, do, disconnect L>? L>Я лично склоняюсь к первому варианту, но может есть какие-то особенности?
Мне кажется что в скрипте по любому будет обращение к базе,
так что практичнее сделать в начале соединение с базой, а в конце разрывать соединение.
а что бы использовать коннект в своих функциях, я обычно
делаю
use vars qw{$dbh};
$dbh = DBI->connect(...);
YourFonc1();
YourFonc2();
YourFoncN();
$dbh->disconnect();
Здравствуйте, loot, Вы писали:
L>perl+mysql L>В одном скрипте может быть несколько обращений к базе. L>Что практичней: L>1)В конструкторе делать connect, а потом из функций делать do/execute, в деструкторе делать disconnect L>2)В каждой функции делать connect, do, disconnect L>? L>Я лично склоняюсь к первому варианту, но может есть какие-то особенности?
Думать особо не надо... Первое конечно толерантнее, эстетичне, если так можно сказать... Зачем в каждой ф-и делать одну и ту же рутину?. Достаточно в одной. Если все ф-и взаимосвязаны между собой. Вообще лучше коннект вынести в отдельный файл. А дальше смотреть — если нельзя его инклюдить в одном месте, то инклюдишь где надо...
И разрешите ещё вопрос : как можно импортировать @EXPORT модуля, если часть его именни определяеться диномически, т.е.
use Forum;
use Forum::Config; # Здесь храниться значение $DefaultLanguageeval("use Lang::$DefaultLanguage"); # А здесь %Errormy $Forum = Forum->New() || Error($Error{'init'}); # Поключения к mysql
$Forum->Функции; # Запросы к базе
$Forum->Destroy(); # Отключение от mysql
Но из-за eval %Error не видна. Есть ли другое решение?