Comment puis-je définir l'heure d'exécution d'un skript Perl sur un serveur Web. Est-ce analogique à php dans le php.ini "max_execution_time" ou y a-t-il un autre moyen?Temps d'exécution Perl max sur le serveur Web
1
A
Répondre
3
Si vous utilisez un CGI (non mod_perl ou FastCGI), il peut être utile simplement ajouter les éléments suivants vers le haut du code:
alarm 30; # SIGALRM delivered to this process after 30 secs
Si le programme n'a pas de gestionnaire pour SIGALRM, il mourront.
Exemple:
use strict;
use warnings;
alarm 2;
my $n = 0;
while (1) {
print "$n\n";
sleep 1;
$n++;
}
__END__
$ perl alr
0
1
Alarm clock
Vous pouvez choisir ce qui devrait se produire lorsque le délai d'attente se produit, comme ceci:
$SIG{ALRM} = sub {
# do stuff
};
Vous placerez ce code avant d'utiliser l'alarme().
Un exemple pourrait être l'envoi d'un e-mail pour vous informer que le script a pris plus de temps que prévu, ou peu importe.
Les alarmes peuvent également être utilisés comme chiens de garde pour les sections spécifiques du code, comme:
alarm 5; # shouldn't take longer than 5 seconds. if not, die.
do_stuff();
alarm 0; # reset the alarm
Hope this helps.
Merci pour cela, je sais ce que vous voulez dire. Mais qu'en est-il si j'utilise mod_perl pour apache. Où puis-je définir le temps d'exécution maximum comme en PHP. Est-ce que quelqu'un le sait par exemple pour (l) xammp? – Robert
Vous pouvez faire la même chose que ci-dessus, seulement sous mod_perl il va tuer l'enfant Apache plutôt que juste le CGI. Sous mod_perl. vous pouvez utiliser quelque chose comme: PerlSetEnv PERL_RLIMIT_CPU 120. Regardez les documents mod_perl pour cela! – mfontani