Forum Webscript.Ru
Программирование => Perl => Тема начата: Dart Sidius от 19 Марта 2005, 12:16:17
-
Возник такой вопрос...коннекчусь к базе
$dbh = DBI->connect("DBI:mysql:database=$sql_database;host=$sql_hostname;port=$sql_port", $sql_user, $sql_password) || die $DBI::errstr;
делаю чего-нибудь
потом
$dbh->disconnect() - разрываю соединение...
но почему то я потом и дальще могу работать с переменной $dbh...т.е.. получается от сервака я отконнектился а переменная просто содержит данные, которые я снял раньше?
-
from perldoc DBD::mysql
DBD::mysql has a "reconnect" feature that handles the so-called
MySQL "morning bug": If the server has disconnected, most probably
due to a timeout, then by default the driver will reconnect and
attempt to execute the same SQL statement again. However, this
behaviour is disabled when AutoCommit is off: Otherwise the
transaction state would be completely unpredictable after a
reconnect.
Т.е. так и задуманно ; )
-
А ещё такой вопрос...обязательно ли тогда использовать $dbh->disconnect() ?...получается что через некоторое время сервер сам порвёт соединение:?
-
В perldoc DBI этому посвящен достаточно большой обзац, чтобы его выкладывать сюда. Рекомендую прочитать.
Также рекомендую к прочтению perldoc Apache::DBI по части disconnect\'а, если данный модуль планируется использовать.
-
Ты на пальцах объясни....я использую только модуль DBI...я слышал что вообще после окончания работы скрипта соединение само закроется без проблем
-
...ответьте пожалуйста на сабж
-
Дальнеейшее продолжение данной темы в том же духе может быть воспринято как флуд. В документации дан предельно четкий ответ по этой теме включая все возможные нюансы.
-
Тебе что ответить сложно?...кто интересно таких модераторов набрал....
-
Dart Sidius, ondr и так тебе больше чем нужно подсказал.
Никто за тебя читать перлдок не будет. Запомни это.
Тема закрыта.