Maks has asked for the wisdom of the Perl Monks concerning the following question:
Hi Monks! I want to watch different databases with AnyEvent as described on http://www.bzerk.org/documents/postgresperl/. Example works fine agains singe database but not with AnyEvent. Here me testing code
I need your advice!sub start_listen{ my $db_base = DB::Base->new($config{database}); my $connection_strings = $db_base->get_connection_strings(); if( $connection_strings ){ my $dbh; for( @{$connection_strings} ){ $dbh = $db_base->get_connection(@{$_}); push @dbhs, $dbh; # print "@{$_}[0] ($dbh->{pg_socket})\n"; # 1. send listen command for each database print "LISTEN request command send to DB: @{$_}[0]\n"; # 2. create hash to find with database send NOTIFY %[ sock +et => dbh ] my $watcher; $watcher = AnyEvent->io( fh => $dbh->{pg_socket}, poll => "r", cb => sub{ print "TEST\n"; my $fh = shift; while(<$fh>){ print STDOUT $_; } } ); } } if( @dbhs ){ print "Now we are listen for " . @dbhs . " connectio +n(s)!\n"; } else { print "Nothing to listen!\n"; } };
|
|---|