Bug dans le lancement d'un script a heure reguliere

Bug dans le lancement d'un script a heure reguliere - Divers - Programmation

Marsh Posté le 23-10-2003 à 20:06:08    

Bonjour,
 
J'ai un script PHP que je lance toutes les 30mins et dont le role est de remplir une table avec des valeurs recuperees sur une page web. Je fais ca avec le gestionnaire de tache planifiee. Jusque la pas de pbr sauf que lorsqu'il a fini la tache il laisse la page de IE ouverte et lorsque 30mins plus tard il relance la tache ben la page se met pas a jour. Par contre si entre 2 maj je ferme la page IE, au moment venu il ouvre une nouveal page et fait la maj correctement :??:  
 
La procedure pour ouvrir le script est simple. J'ai fait un fichier bat ou dedans j'ai mis la ligne de commande suivante: "start c:\web\monscript.php"
Et avec le gestionnaire de tache je lance ce fichier BAT.
 
Pour remedier a mon pbr je pensais, une fois le script fini, de fermer la fenetre avec un javascript du style "windows.close" mais je suis sous win2k et il me demande de confirmer la fermeture de la fenetre... :o  
 
Quelqu'un aurait une solution... svp :hello:  
 
Merci pour vos reponses

Reply

Marsh Posté le 23-10-2003 à 20:06:08   

Reply

Marsh Posté le 23-10-2003 à 20:25:40    

1) Met ton script sur un serveur web en local.
2) Met cette commande dans ton gestionnaire de tâches (en modifiant au besoin l'url)

iexplore.exe "http://localhost/monscript.php"


3) Dans le gestionnaire des tâches toujours, tu indiques "fermer la tâche au bout de xx minutes"
 
Et adieu le problème. (d'ailleurs, t'as même pas besoin de fermer IE)

Reply

Marsh Posté le 23-10-2003 à 20:27:09    

En fait, iexplore marche pas.
 

explorer.exe "http://www.google.com"


 
Ca ça marche par contre.


Message édité par MagicBuzz le 23-10-2003 à 20:27:18
Reply

Marsh Posté le 23-10-2003 à 20:35:19    

Bon j'ai mis a jour le fichier bat. je vais attendre les prochaines mises a jour mais je ne sais pas si ca va resoudre mon pbr...

Reply

Marsh Posté le 23-10-2003 à 20:39:32    

fais ce que je te dis, tu te prendras moins la tête...


Message édité par MagicBuzz le 23-10-2003 à 20:39:47
Reply

Marsh Posté le 23-10-2003 à 20:57:12    

Dans l'onglet Parametres j'ai coche la case "Arreter la tache si elle s'execute durant:" et pour la duree j'ai mis 1min. c'est le mini qu'on peut mettre et l'execution du script prends quelques sec (Le max que j'ai vu c'est 25sec qd ca lag).
Mais bon ca me ferme pas la fenetre de IE au bout d'une minute car la tache a finie de s'executee (le script a fini)
 
...

Reply

Marsh Posté le 23-10-2003 à 21:04:20    

Chelou... Au boulot ça marche pourtant.

Reply

Marsh Posté le 23-10-2003 à 21:26:46    

Autre alternative peut etre c'est a la fin de mon script rediriger sur une autre page.
 
Style je lance "monscript.php" a la fin il redirige vers une autre page "leurre.php" par exemple. Et a la prochaine relance automatique comme il va voir que la page c'est pas "monscript.php" donc il va le mettre a jour.
 
Qu'en penses-tu?
 
le seul pbr c'est que je ne sais pas faire de redir :/

Reply

Marsh Posté le 23-10-2003 à 21:49:21    

ouais, ça devrait marcher en effet, mais c'est un peu goret :D

Reply

Marsh Posté le 23-10-2003 à 21:52:48    

Sinon, essaie ma commande, avec /n à la fin.
 
Il ouvrira une nouvelle fenêtre à chaque fois :D

Reply

Marsh Posté le 23-10-2003 à 21:52:48   

Reply

Marsh Posté le 23-10-2003 à 21:53:50    

sinon, si t'es patient, attends demain, je te file le code en VBS qui fonctionnera et sera plus propre (on verra même pas que l'explorateur est en train de faire tourner le script)

Reply

Marsh Posté le 23-10-2003 à 23:05:41    

Effectivement c'est une methode de gros sale, mais bon on fait comme on peut... :/
 
Le truc d'ouvrir une fenetre a chaque ouais j'y ai pense. mais justement tout la semaine prochaine je suis pas chez moi et avec un script qui se lance toutes les 4 mins ca fait plus de 2500 fenetres de IE au bout de 7 jours :pt1cable:
 
Je serai patient jusqu'a demain. pas de pbr ;)

Reply

Marsh Posté le 24-10-2003 à 00:20:39    

ok.
pour une petite mise en bouche, ça donne un truc du genre :
 
dim inet
set inet = CreateObject("Application.InternetExplorer" )
inet.navigate "http://localhost.monscript.php"
do while not inet.ReadyState = OK
   doevents
loop
inet.Close
set inet = nothing
 
Mais l'objet s'appelle pas comme ça, et je me souvient plus de la valeur de la constante qui dit que IE a fini de charger la page...
 
www.devguru.com tu devrais je crois trouver ces infos


Message édité par MagicBuzz le 24-10-2003 à 00:21:51
Reply

Marsh Posté le 27-10-2003 à 15:53:27    

Salut MagicBuzz,
 
T'as des nouvelles pour le script VBS? La j'avoue que j'y connais absolument rien en VBS. Si tu me dis po comment faire je ne saurais po par moi meme :(

Reply

Marsh Posté le 27-10-2003 à 16:25:02    

Tiens, je pensais justement à ton problème, et je me disais "tiens, c'était quel topic au fait ? puisqu'il se manifeste pas, il attendra un jour de plus..."
 
Pas de pot, tu viens de te réveiller :D
 
Alors :
 


const READYSTATE_COMPLETE = 4
 
dim inet
set inet = CreateObject("InternetExplorer.Application" )
 
inet.Navigate "http://www.server.com/ton_script.php"
Do While Not inet.ReadyState = READYSTATE_COMPLETE
    DoEvents
Loop
 
inet.Quit
Set inet = Nothing

Reply

Marsh Posté le 27-10-2003 à 17:28:48    

desole de t'avoir fait une fausse joie :whistle:  
 
ce script j'en fait koi? je le mets dans un fichier .bat que je lance avec le planificateur de tache.
Faut le compiler?
 
T'es dit j'y connais rien en VBS. c'est meme la 1ere fois que j'en vois :pt1cable:

Reply

Marsh Posté le 27-10-2003 à 17:30:50    

Non, tu le met dans un fichier *.vbs
 
et tu le lance comme un programme compilé

Reply

Marsh Posté le 27-10-2003 à 17:31:17    

Le seul impératif, c'est que tu ait IE5 minimum et Windows 98 pour avoir tous les objets installés.

Reply

Marsh Posté le 27-10-2003 à 18:10:22    

J'ai Win2k et IE6 donc ca devrait rouler.
 
J'ai mis le script dans un fichier *.vbs. j'ai change l'url (j'ai mis celle de google pour le 1er test) et il me retourne une erreur
ligne: 8
caract: 5
erreur: type incompatible: 'DoEvents'
code: 800A000D
 
En gros c'est le DoEvents qu'il aime pas :??:

Reply

Marsh Posté le 27-10-2003 à 19:30:17    

argh...
 
bah il est con ton truc :D
 
faut que tu trouves comment faire un sleep alors. chais pu comment on fait...
 
je regarde en vitesse

Reply

Marsh Posté le 27-10-2003 à 19:45:39    

Remplace "DoEvents" par "WScript.Sleep 100" (fait des pauses de 1/10 seconde pour laisser le temps au script de s'éxécuter sans bouffer tout le CPU)
 
C'est moins joli mais bon...
 
PS: si tu attends qu'il se passe quelquechose quand tu exécutes ton script, alors modifie-le de la façon suivante : (mais vire les modification ensuite, c'est juste pour voir ce qu'il fait)
 


const READYSTATE_COMPLETE = 4
 
dim inet
set inet = CreateObject("InternetExplorer.Application" )
 
inet.Navigate "http://www.google.com"
 
' Ligne à virer - Affiche IE
inet.visible = true
 
Do While Not inet.ReadyState = READYSTATE_COMPLETE
    WScript.Sleep 100
Loop
 
' Ligne à virer - On voit google
WScript.Sleep 5000
 
' Ligne à virer - Effectue une recherche sur "Manga-Torii"
inet.document.f.q.value = "Manga-Torii"
 
' Ligne à virer - Clique sur le bouton "J'ai de la chance"
inet.document.f.btnI.click()
 
' Ligne à virer
WScript.Sleep 5000
 
inet.Quit
Set inet = Nothing


 
VBS c'est maxi pratique pour automatiser des trucs sur Internet (on peut même programmer une machine à flooder sur le forum :D)


Message édité par MagicBuzz le 27-10-2003 à 19:47:14
Reply

Marsh Posté le 27-10-2003 à 23:08:56    

Rhoooooo ca marche avec le sleep.
 
T'es un Dieu MagicBuzz :jap:
 
En tout cas je te remercie beaucoup pour ton aide. C'est franchement bien de partager tes connaissances et d'aider les autres.
 
PS: sais po si tu te souvient j'avais fait un post un peu avant celui-la pour optimiser l'affichage de tableaux. Tu m'avais donne une solution mais je n'ai pas vraiment eu le tps d'y regarder pour le moment. Mais je garde ca dans un coin. Tu risque de voir remonter ce topic ;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed