为什么直到$ sth-> execute完成之后,这段代码才执行信号处理程序?更重要的是,我该如何解决它?如何获得DBD :: Pg可靠超时?
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use Sys::SigAction qw(set_sig_handler);
my $dbh = DBI->connect('dbi:Pg:dbname=dc');
eval {
my $h = set_sig_handler('ALRM', sub { die "timeout\n" });
eval {
alarm 1;
my $sth = $dbh->prepare("SELECT pg_sleep(10)");
print "Before execute\n";
$sth->execute;
print "After execute\n";
$sth->finish;
};
alarm 0;
die "[email protected]" if [email protected];
};
die "[email protected]" if [email protected];
print "Finished\n";
是的,我也试过。不幸的是,在没有冻结在同一个地方的情况下,没有办法等待相同的查询。也就是说,除非我想使用睡眠循环,这会增加不必要的延迟。 – Flimzy 2010-10-10 05:05:42