J'ai une application qui fonctionne en utilisant CGI::Fast de Perl.Comment faire pour que l'application CGI :: Fast basée tue kill -HUP?
Fondamentalement mainloop du code est:
while (my $cgi = CGI::Fast->new()) {
do_whatever($cgi);
}
Maintenant, je voulais ajouter la capacité de tuer, mais sans perturber la demande en cours de traitement. Pour ce faire, j'ai ajouté la manipulation à SIGHUP. Plus ou moins le long des lignes:
my $sighupped = 0;
$SIG{ 'HUP' } = sub { $sighupped = 1; };
while (my $cgi = CGI::Fast->new()) {
do_whatever($cgi);
exit if $sighupped;
}
Ce qui fonctionne vraiment super quand il vient à « processus pas dérangeant lorsqu'il gère demande de l'utilisateur ». Mais, si le processus attend une nouvelle requête, l'exit basé sur sighup ne sera pas exécuté jusqu'à ce qu'il reçoive finalement une requête et la traite.
Y at-il une solution de contournement pour cela? Ce que je voudrais faire pour que le script sorte immédiatement si le HUP (ou un autre signal, il peut être changé) l'atteint en attendant une requête.