2010/5/7 Mons Anderson <[email protected]>:
> On Friday 07 May 2010 00:22:12 Dmitry Karasik wrote:
>>  http://search.cpan.org/~turnstep/DBD-Pg-2.17.1/Pg.pm#Asynchronous_Queries
>>
>> я тоже )
>
> Беда этой штуки в необходимости поллинга.
> Я вынужден периодически проверять "а нет-ли данных?"
> В случае форкнутого процесса я получаю событие о том, что данные есть, сразу
> по получению данных.

Я так понимаю, что иначе придется привязать DBD::Pg к какой-то
реализации, а так можно самому сделать обертку:

async_sql( $sql, sub { обработка результатов } );

sub async_sql {
  my ($sql, $cb) = @_;
  my $sth = $dbh->prepare($sql, {pg_async => PG_ASYNC});
  $sth->execute;
  my $w;
  $w = AnyEvent->timer (after => 0.5, interval => 1, cb => sub {
      return unless $sth->pg_ready;
      undef $w; # можно так удалить таймер?
      return $cb->( $sth->pg_result );
  };
  return;
}

Что-то типа такого заработает? Нет у меня нормальной практики c
AnyEvent, но мне кажется, что можно попробовать что-то такое.

> --
> Mons Anderson aka Vladimir Perepelitsa
> <[email protected]> / #99779956 / [email protected]
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>



-- 
Best regards, Ruslan.
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить