|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Konstantin Tokar 2:5020/400 25 Nov 2004 17:41:27 To : Ven Subject : Re: DBD::Oracle - отследить разрыв соединения с сервером -------------------------------------------------------------------------------- Ven wrote: > Hi, All ! > > Есть скрипт на перле, который постоянно (в бесконечном цикле) обращается > к базе данных Oracle (DBD:Oracle) и при необходимости производит некоторые > действия. В настоящее время и скрипт и база крутятся на одном компе и > проблемм с > пропаданием соединения с базой нет. Появилась необходимость установить этот > скрипт на другом сервере, каналы между ними могут иногда (очень редко) > пропадать. > Как мне "кошерно" определить в скрипте, что коннект с базой утерян, а самое > главное - как его восстановить. То есть что коннект утерян я вижу из ошибок > обращения к базе в очередном цикле, но мои попытки заново произвести коннект > к базе привели к Segmentation fault. Вот я и задумался, может быть есть > какая-то > стандартная процедура для таких случаев ? > Если это важно OS - Linux, Oracle 8.1.7, perl 5.6 (на новом серваке будет > что-то из более > новых версий, пока тестирую на старом периодически прибивая серверный > процесс Оракла, по которому работает скрипт). > > С Уважением, Сергей > > Есть $dbh->ping() . В программе ниже выполняется опрос оракла каждую секунду, и при пропадании связи (я перезапускал оракл) восстанавливается. $dbh->disconnect() скорее всего не нужен, но может быть, полезно сделать undef $dbh. #!perl -w use strict; use db_connect; my $dbh = db_connect; while(){ $|=1; print STDERR '.'; unless($dbh->ping()){ warn("Disconnect..."); eval { $dbh->disconnect; }; warn($@) if $@; eval { $dbh = db_connect; }; warn($@) if $@; } sleep(1); } --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/6577baa0cdc8.html, оценка из 5, голосов 10
|