vbscript - action périodique

Le
Gilles RONSIN
Salut,

pour simuler un de nos dispositifs, j'ai écrit un vbscript qui
régulièremet envoie des datas à un serveur.
Actuellement paramétré pour poster toutes les 5 min un nouveau point.
--
URL = "http://monsite/comm.php"

Delay = 5
indexc = 0

Wscript.echo "POST to " & URL & vbcrlf & _
"every " & Delay & " min " & vbcrlf & vbcrlf


Do
sNow = Now()
temp = split(sNow,"/")
sDate = Mid(temp(2),3,2) & "/" & temp(1) & "/" & temp(0) & _
"," & Mid(sNow,12)
ture = 30+7.5*cos(Timer()/3600)
tosend = "_c=" & indexc & "&ture=" & ture
wscript.echo "-> " & toSend
wscript.echo "<- " & HTTPPost(URL, toSend)
indexc = indexc + 1
iTimer = Timer() + Delay*60
Do While Timer()<iTimer
Loop
loop

Function HTTPPost(sUrl, sRequest)
Set oHTTP = CreateObject("MSXML2.ServerXMLHTTP")
oHTTP.open "POST", sUrl, false
oHTTP.setRequestHeader "User-Agent","MC100"
oHTTP.setRequestHeader "Content-Type", "application/x-www-form-
urlencoded"
oHTTP.setRequestHeader "Content-Length", Len(sRequest)
oHTTP.send sRequest
HTTPPost = oHTTP.responseText
End Function

Function HTTPGet(URL)
Set oHTTP = CreateObject("MSXML2.ServerXMLHTTP")
oHTTP.open "GET",URL,false
oHTTP.setRequestHeader "User-Agent","XXX"
oHTTP.send ""
HTTPGet = oHTTP.responseText
End Function



J'ai 2 problèmes (qui sans doute doivent se résoudre en même temps)
- 1) ça ne passe pas minuit (forcément Timer() y est réinitialisé à
0)
- 2) comme le script passe la majorité de son temps à attendre les 5
min, il occupe 100% du temps processeur.

Question : existe t'il un moyen dans un vbscript de déclancher une
fonction sur un timer (qui ne soit pas dépendant du jour) ?

Merci pour vos suggestions
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles LAURENT [MVP]
Le #702075
"Gilles RONSIN" news:
| Salut,

Bonjour,

| J'ai 2 problèmes (qui sans doute doivent se résoudre en même temps)
| - 1) ça ne passe pas minuit (forcément Timer() y est réinitialisé à
| 0)
| - 2) comme le script passe la majorité de son temps à attendre les 5
| min, il occupe 100% du temps processeur.

| iTimer = Timer() + Delay*60
| Do While Timer()<iTimer
| Loop

WScript.Sleep (1000 * 60 * Delay)

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Gilles RONSIN
Le #702074
"Gilles LAURENT [MVP]" 11:35:31, écrivait ceci:

Re,

| iTimer = Timer() + Delay*60
| Do While Timer()<iTimer
| Loop

WScript.Sleep (1000 * 60 * Delay)


Tout bêtement ...

Grand merci ;-)

F. Dunoyer [MVP]
Le #709309
Gilles RONSIN avait prétendu :
Salut,

pour simuler un de nos dispositifs, j'ai écrit un vbscript qui
régulièremet envoie des datas à un serveur.
Actuellement paramétré pour poster toutes les 5 min un nouveau point.

J'ai 2 problèmes (qui sans doute doivent se résoudre en même temps)
- 1) ça ne passe pas minuit (forcément Timer() y est réinitialisé à
0)
- 2) comme le script passe la majorité de son temps à attendre les 5
min, il occupe 100% du temps processeur.

Question : existe t'il un moyen dans un vbscript de déclancher une
fonction sur un timer (qui ne soit pas dépendant du jour) ?

Merci pour vos suggestions


Une autre voie c'est d'utiliser le plannificateur de tache.
et tu relances ton script toutes les 5 minutes.
Au moins si le script se crache (ou que quelqu'un le supprime) 5
minutes apres il sera automatiquement relancé

--
François Dunoyer [MVP Windows Server / Security]
Des infos en Vrac : http://fds.mvps.org/ta/envrac.htm
Site perso : http://www.fdunoyer.net

Gilles RONSIN
Le #704897
F. Dunoyer [MVP] nov. 2007 22:31:02, écrivait ceci:

Salut voisin,

Une autre voie c'est d'utiliser le plannificateur de tache.
et tu relances ton script toutes les 5 minutes.
Au moins si le script se crache (ou que quelqu'un le supprime) 5
minutes apres il sera automatiquement relancé


oui j'avais pensé à cette solution. Par contre comme j'ai une boucle
avec des calculs, ça complique inutilement l'algo.
La solution de Gilles est parfaite pour moi.
Merci en tout cas pour ta suggestion

Publicité
Poster une réponse
Anonyme