Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1098 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Lancer script avec redondance [Resolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lancer script avec redondance [Resolu]

n°2255800
clubber43
Posté le 15-04-2015 à 08:54:50  profilanswer
 

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 :
 

Code :
  1. # Programme principal
  2. use AnyEvent::DateTime::Cron;
  3. session();
  4. # boucle infinie, a stopper avec un kill
  5. # remplacer le '* * * * *' par 'mm hh * * *' pour un log tous les jours a hh:mm
  6. my $cron = AnyEvent::DateTime::Cron->new();
  7. $cron->add( '*/3 * * * *' => &session ); # toutes les 3 minutes, pour tester
  8. $cron->start->recv;


 
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
mood
Publicité
Posté le 15-04-2015 à 08:54:50  profilanswer
 

n°2255910
gilou
Modérateur
Modzilla
Posté le 16-04-2015 à 12:27:27  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2256152
clubber43
Posté le 20-04-2015 à 09:55:31  profilanswer
 

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.
 
@+


---------------
Merci
n°2256194
gilou
Modérateur
Modzilla
Posté le 20-04-2015 à 14:45:12  profilanswer
 

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+,


Message édité par gilou le 20-04-2015 à 14:54:08

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2256216
clubber43
Posté le 20-04-2015 à 21:23:23  profilanswer
 

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.
 
@+


---------------
Merci
n°2256245
gilou
Modérateur
Modzilla
Posté le 21-04-2015 à 03:27:01  profilanswer
 

clubber43 a écrit :

Merci Gilou pour ton aide.
Pour finir le code, je fais un ctrl+C pour  arreter le code ?

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2256248
clubber43
Posté le 21-04-2015 à 08:16:01  profilanswer
 

Ok. Merci pour ton retour Gilou
 
@+


---------------
Merci
n°2256251
clubber43
Posté le 21-04-2015 à 09:01:05  profilanswer
 

C'est bon, script testé et validé :)
Merci Gilou pour le bout de code !!
 
Merci
@+


---------------
Merci

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Lancer script avec redondance [Resolu]

 

Sujets relatifs
Variable dans script htm[Résolu]Tâche planifiée - Script Synology
script ou autresCréation Script
VBA / lancer un publipostage[VBS] Erreur lors de l'utilisation d'un script sous office 2010
Script powershell et fichier CSVScript Freebox - Vider un repertoire tous les jours
Script animation bandeau déroulant[PowerShel] Création utilisateur Office 365 via script powershell
Plus de sujets relatifs à : Lancer script avec redondance [Resolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR