|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Yuri A. Wolf 2:5020/400 23 Jan 2002 09:54:22 To : All Subject : dbh и fork() -------------------------------------------------------------------------------- Hi, All! Давно заметил проблемму, решаю извращениями всякими, но хочется в корне исправить: Вот пример скоипта: #!/usr/bin/perl -w use strict; use DBI; my $dbname = 'mydbname'; my $host = '127.0.0.1'; my $user = 'myuser'; my $password = 'mypasswd'; my $sth; my $dbh = DBI->connect("DBI:mysql:database=$dbname;host=$host", $user, $password, {'RaiseError' => 1}) || die "Can't connect: $DBI::errstr\n"; my $cond = 1; while ($cond) { $sth = $dbh->prepare("SELECT * from mytable WHERE SOMECONDITION") || die "$dbh->errstr\n"; $sth->execute || die "$dbh->errstr\n"; while (my $ref = $sth->fetchrow_hashref()) { if (my $pid = fork) { $dbh->do("UPDATE users SET current_batch = 0, date_sent = date_sent WHERE id = $user_id AND current_batch = 1" ) || die "$dbh->errstr\n"; } else { die "Can't fork: $!" unless defined $pid; #... здесь может случиться и die, причем не по ошибке, а по моей просьбе exit; } } $sth->finish || die "$dbh->errstr\n"; # здесь где-то $cond может смениться, чтобы вышли из цикла... } $dbh->disconnect(); Скрипт покоцанный, но все важное показано. 1. А теперь вопросы: по поводу subj'а ничего странного нет - есть ли что-то не по правилам DBI? 2. Может "MySQL: connection lost произойти" когда child сделает die? 3. Как в случае использования fork() с DBI рaботать? -- Юрий wolf@obk.ru --- ifmail v.2.15dev5 * Origin: OVK-Trade (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/64592fd337c6.html, оценка из 5, голосов 10
|