Page 1 sur 1
[R] Suspendre l'execution d' une boucle entre 2 horaires ?
Posté : sam. 09 janv. 2010 21:21
par yendis1234
Bonjour a tous,
J'ai créé une boucle infinie (du type for $i= ... to next ) qui interroge toute les 15 minutes une base de donnée SQL.
Le serveur de cette base est inaccessible de 2 à 04 heures du matin, ce qui génère un bug dans l'exécution de la requête et interrompt la boucle que j'ai créé.
Je n'arriver pas à mettre la main sur l'instruction ou le scripte qui permettrai de suspendre l'exécution de la boucle entre telle et telle heure. J'ai essayé plusieurs instructions relatives aux horaires mais sans succès.
Qui aurais une idée, merci d'avance
Sidney
Re: Suspendre l'execution d' une boucle entre 2 ho
Posté : sam. 09 janv. 2010 21:36
par jbnh
Règles de présentation d'un message s'il vous plait.
Re: [..] Suspendre l'execution d' une boucle entre 2 horaires ?
Posté : sam. 09 janv. 2010 21:51
par timmalos
Rajoutez une boucle dans la boucle:
Code : Tout sélectionner
If @Hour >=2 AND @Hour <4 Then
While @Hour >=2 AND @Hour <4
Sleep(10000)
WEnd
EndIF
Re: [..] Suspendre l'execution d' une boucle entre 2 horaires ?
Posté : sam. 09 janv. 2010 22:23
par SagePourpre
@Timmalos
Tu te répètes...
Le If... then est inutile.
Re: [..] Suspendre l'execution d' une boucle entre 2 horaires ?
Posté : sam. 09 janv. 2010 22:56
par Tlem
Si le code doit faire d'autres actions entre temps, il serait plus judicieux de passer par un
AdlibRegister().
Voici un code très simplifié :
► Afficher le texte
Code : Tout sélectionner
AdlibRegister("SqlRequest", 1000 * 15) ; 15 secondes (rajouter *60 pour faire 15 minutes).
While 1
Sleep(1000)
WEnd
Func SqlRequest()
If @HOUR >= 2 Or @Hour <= 4 Then
ConsoleWrite("Lecture des données SQL à " & _Time() & @CRLF)
EndIf
EndFunc
Voici un code bien plus explicite :
► Afficher le texte
Code : Tout sélectionner
HotKeySet("{ESC}", "_Quitter")
AdlibRegister("SqlRequest", 1000 * 15) ; 15 secondes (rajouter *60 pour faire 15 minutes).
ConsoleWrite("Début de la boucle à " & _Time() & @CRLF)
While 1
; Mes Commandes
local $a
For $i = 1 To 15000000
$a += $i
Next
ConsoleWrite("Fin de la boucle et début de la pause à " & _Time() & @CRLF)
Sleep(20000)
ConsoleWrite("Fin de la pause et début de la boucle à " & _Time() & @CRLF)
WEnd
Func SqlRequest()
If @HOUR >= 2 Or @Hour <= 4 Then
ConsoleWrite("Lecture des données SQL à " & _Time() & @CRLF)
EndIf
EndFunc
Func _Time()
Return @HOUR & ':' & @MIN & ':' & @SEC
EndFunc
Func _Quitter()
Exit 0
EndFunc
On constatera par la même occasion, que malgré l'occupation importante du code dans la boucle
While, que la fonction
SqlRequest() est bien exécutée toutes les 15 secondes.

Re: [R] Suspendre l'execution d' une boucle entre 2 horaires ?
Posté : dim. 10 janv. 2010 19:00
par yendis1234
Merci de vos solutions, la condition while... m'a permis de débloquer la situation.
Cordialement
Sidney