|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/1694967e44a52.html, оценка из 5, голосов 10
|