Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Vladimir Avilov                      2:5020/400     02 Feb 2002  19:24:08
 To : All
 Subject : DBI connect
 -------------------------------------------------------------------------------- 
 
   Hi, All!
 
 Хочется, чтобы при разрыве соединения с базой данных скрипт сам мог
 переконнектиться. Я написал такой код (все лишнее выкинуто):
 
 for(;;)
 {
   eval {$Base = DBI->connect($DataSource, $User, $Pass, \%Attr)};
   last unless ($@);
   sleep($Pause);
 }
 
 Пока соединение с базой есть, все работает отлично. Для проверки закрыл
 файрволом коннект по нужному порту. Происходит следующее. С каждой итерацией
 цикла возникает еще один процесс (похоже, где-то внутри DBI происходит
 fork). Процессы со временем не умирают, т.е. сколько итераций прошло,
 столько стало и процессов. Причем, процессы эти не умирают ни после того,
 как соединение все-таки устанавливается, ни после $Base->disconnect
 (специально проверял), а продолжают существовать до тех пор, пока не
 завершится скрипт.
 
 ttyp3$ ps -ax | grep perl
 81569  p4  S+     0:00.20 /usr/bin/perl -w ./db.rollback
 81570  p4  Z+     0:00.00  (perl)
 81573  p4  Z+     0:00.00  (perl)
 81574  p4  Z+     0:00.00  (perl)
 81577  p4  Z+     0:00.00  (perl)
 81578  p4  Z+     0:00.00  (perl)
 81579  p4  Z+     0:00.00  (perl)
 
 Судя по букве Z, процессы - зомби. Это немного радует, но зачем они мне в
 таких количествах?
 
 ОС - FreeBSD 4.2, база - Oracle 8 с чем-то, версия perl - 5.005_03.
 
 Сталкивался ли кто с подобной проблемой, и если да, то что все это значит?
 
 -- 
 Vladimir Avilov
 ICQ UIN:68381224
 --- ifmail v.2.15dev5
  * Origin: Administration of Tambov Region (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 DBI connect   Vladimir Avilov   02 Feb 2002 19:24:08 
Архивное /ru.perl/1694967e44a52.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional