Lancer script avec redondance [Resolu] - Perl - Programmation
Marsh Posté le 16-04-2015 à 12:27:27
La résolution pour cron est de l'ordre de la minute, donc ça ne marchera pas.
Avant de vouloir lancer un script toutes les secondes, as tu vérifié le temps d'exécution dudit script?
A+,
Marsh Posté le 20-04-2015 à 09:55:31
OUi GIlou,
il dure environ 0.8 à 0.9 secondes.
AU mieux, je peux le lancer toute les 2 secondes, ce problème ne sera pas génant.
Mais du coup si cron ne marche pas, je peux pas utiliser non plus le plannif de tache qui lui aussi
a une résolution de 5 minutes je crois (windows XP)...
Et en créant une boucle dans mon main, je peux appeler le programme automatiquement ??
Merci Gilou.
@+
Marsh Posté le 20-04-2015 à 14:45:12
Le plus simple dans ce cas pour toi c'est de faire un truc genre
while (1) {
# ton code
sleep 2; # on attends 2 secondes
}
ou une variante du même genre:
my $interval = 2; # toute les 2 secondes
for (;;) {
my $start = time;
# ton code
if ((my $remaining = $interval - (time - $start)) > 0) {
sleep $remaining; # on n'attends que le nombre de secondes restantes
}
}
Ça a les avantages et les inconvénients d'un code bloquant avec sleep.
Si ça dure moins d'une seconde, tu peux utiliser Time::HiRes et faire les calculs en microsecondes.
A+,
Marsh Posté le 20-04-2015 à 21:23:23
Merci Gilou pour ton aide.
Pour finir le code, je fais un ctrl+C pour arreter le code ?
Je vais méditer dessus et faire des essais demain matin.
@+
Marsh Posté le 21-04-2015 à 03:27:01
clubber43 a écrit : Merci Gilou pour ton aide. |
Par exemple, ou sinon tu interceptes un signal autre qui met un flag a true, et c'est ce flag qui fait sortir de la boucle.
Bon, les handlers de signal en perl, ça marche bien sous unix, sous windows, ça peut révéler des surprises (en particulier si c'est un ctrl-c qui est intercepté, par expérience, j'évite), et il vaut mieux bien tester.
A+,
Marsh Posté le 21-04-2015 à 09:01:05
C'est bon, script testé et validé
Merci Gilou pour le bout de code !!
Merci
@+
Marsh Posté le 15-04-2015 à 08:54:50
Bonjour à tous,
J'ai une question sans doute simple, mais dont je ne trouve pas réponse pour l'instant...
Je veux lancer un script Perl de façon cyclique (toute les secondes) et je ne peux pas utiliser le plannif. de taches sous Windows.
Gilou m'avais donné un bout de script avec un "cron" etje ne me rappelle pas comment il s'utilise et s'il est possible de faire un lancement à la seconde...
Voici le bout de code de Gilou :
Existe-t-il un autre moyen de lancer les scripts de façon cyclique ou est-ce que je reste sur cet outil ?
Je vous remercie pour votre aide
Message édité par clubber43 le 21-04-2015 à 09:01:20
---------------
Merci