Pourquoi ce code n'exécute-t-il pas le gestionnaire de signal avant la fin de $ sth-> execute? Et plus important encore, comment puis-je le réparer?Comment puis-je obtenir un délai d'attente DBD :: Pg fiable?
#!/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";
Oui, j'ai aussi essayé. Malheureusement, il n'y a aucun moyen d'attendre la même requête sans geler au même endroit. C'est, à moins que je veux utiliser une boucle de sommeil, ce qui ajoute des retards inutiles. – Flimzy