Page 1 sur 1
[R] Vérifier le temps d'execution d'un script
Posté : mer. 06 mai 2009 11:08
par johnfive
Bonjour,
je souhaiterais vérifier le temps d'exécution d'un script.
Par exemple, j'ai un script qui installe automatiquement une application, et je souhaiterais, en parallèle pouvoir déclencher un script (par exemple un message box) si mon installation venait à s'éterniser. C'est à dire si ca fait plus de 5 min que mon script a été exécuté et qu'il devrait avoir fini depuis longtemps, j'ai un retour du problème.
Merci.
Re: Verifié le temps d'execution d'un script
Posté : mer. 06 mai 2009 11:17
par Iste
Ben, pour ca le plus simple est de nomer le script compilé avec un nom bien distinctif (donc autre que setup.exe etc.)
Enssuite, tu lance un autre .exe (le lancement peut tres bien se faire dans le 1er script)
avec dedant un truc du genre
Code : Tout sélectionner
ProcessWait ("monsuperprogramme.exe") ; attendre que monsuperprogramme.exe se lance
Sleep (1000*60*5) ; dodo 5min
If ProcessExists ("monsuperprogramme.exe") Then ProcessClose ("monsuperprogramme.exe")
Edit : Tu doit aussi pouvoir tout faire dans ton propre script, si la peur est juste qu'il tourne en rond, et pas qu'il plante.
pour ca un TimerInit() au début, puis peut etre un AdlibEnable() avec un TimerDiff() et une condition pour tout stoper
Re: Verifié le temps d'execution d'un script
Posté : mer. 06 mai 2009 11:28
par johnfive
Merci beaucoup pour ta réponse !!
C'est exactement ce que je voulais !!
Merci !
Re: Verifié le temps d'execution d'un script
Posté : mer. 06 mai 2009 12:32
par Iste
Mais de rien !
Par contre je te conseil vivement la 2em solution si tu a plusieur instal (ca evitera que l'une ferme l'autre)
et egalement de lire
ce post sur la presentation des messages
Re: Verifié le temps d'execution d'un script
Posté : mer. 06 mai 2009 13:20
par Tlem
@johnfive
Merci de prendre le temps de lire les
règles de présentation d'un message.
En ce qui concerne votre problème, pour ma part je ferait une simple fonction dans mon script qui serait appelée par un
AdlibEnable et qui vérifierait la durée d'exécution du script lui même.
Re: [R] Vérifier le temps d'execution d'un script
Posté : mer. 06 mai 2009 17:31
par johnfive
Oui, je viens d'ailleurs de regarder AdlibEnable dans la doc.
Si j'ai bien compris le principe, AdlibEnable exécute une fonction tous les temps "t" (250ms par défaut)
Code : Tout sélectionner
AdlibEnable("myadlib")
;...
Exit
Func myadlib()
If WinActive("Error") Then
;...
EndIf
EndFunc
Mais par exemple, si je veux vérifier que mon script de téléchargement (via InetGet) n'est pas coincé, comment faire ?
Autre chose, si je met un sleep dans la fonction myadlib(), par exemple :
Code : Tout sélectionner
AdlibEnable("myadlib")
;...
Exit
Func myadlib()
sleep(5000)
If WinActive("Error") Then
;...
EndIf
EndFunc
Est-ce que cela va bloquer mon script ?
Autrement dit : Est-ce que la fonction myadlib() est exécuté en parallèle de mon script ?
Re: [R] Vérifier le temps d'execution d'un script
Posté : mer. 06 mai 2009 17:52
par Iste
Pour le sleep, je suis pas bien sur, mais je crois bien qu'il bloque le rest (a confirmer)
sinon, la fonction InetGet() va de paire avec les macro @InetGetActive et @InetGetBytesRead.
Je serais toi, je lancerais la fonction en parralelle tout les 10 seconde (ca me semble raisonable) et si @InetGetBytesRead n'a pas changé, c'est qu'il y a un bug !
edit code :
Code : Tout sélectionner
Global $byteDL = "NULL"
AdlibEnable("myadlib",10*1000)
;...
Exit
Func myadlib()
If $byteDL <> @InetGetBytesRead Then
$byteDL = @InetGetBytesRead
Else
MsgBox("","","BUUUUUUG !!!")
EndIf
EndFunc
Re: [R] Vérifier le temps d'execution d'un script
Posté : mer. 06 mai 2009 21:44
par Tlem
La question du multitache avec AutoIt à déjà été abordée de nombreuses fois.
Mais pour la Xième fois, oui une pause prolongée dans le processus du script bloque l'exécution de
AdlibEnable, et une pause dans une fonction appelée par
AdlibEnable bloque le reste du script.
A vous de concevoir intelligemment vos fonctions pour qu'elles ne soient pas bloquantes.
Code : Tout sélectionner
AdlibEnable("myadlib", 5000)
;...
Exit
Func myadlib()
If WinActive("Error") Then
;...
EndIf
EndFunc