Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Mon 15 March 2010 19:10

yteb
Participant occasionnel
Date d'inscription: 25 Jun 2007
Messages: 22

Lancement .bat pour requetes geographiques en tache de fond

Bonjour à tous,

Bon c'est la panique, je suis déjà très en retard sur mon projet et je suis bloqué depuis 2 jours...Voila mon probleme :

J'ai un script php qui lance un fichier .bat à la fin. Je fais cela car le fichier .bat lancé contient de nombreuses commandes sql pour ma base postgresql/poqtgis qui peuvent prendre plusieurs heures (elle contient de nombreux traitements geographiques assez lourds). Vu que mes premiers lancements du .bat par un simple exec n'aboutissait pas j'aimerais essayer une petite feinte :

- lancer le fichier .bat independemment de ma page php
- rediriger ma page sur une page de chargement avec par exemple un gif de load qui tourne
- une fois que les traitements du .bat sont effectués, reprendre la navigation normale en chargeant la page suivante

Mais je n'arrive pas a lancer le .bat de maniere independante. J'ai bien essayé de mettre des NULL: ou NULL (équivalent du & de linux) dans la commande exec ou d'autre script trouvé sur différents forum mais rien n'y fait !!!! HELPPPPP

Bref si quelqu'un avait une petite idée ca me sauverait vraiment la vie car l'echeance est toute proche !!!

Merci d'avance

Hors ligne

 

#2 Mon 15 March 2010 21:59

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Re: Lancement .bat pour requetes geographiques en tache de fond

Bonsoir,
Si c'est la panique alors je pense qu'il faut donner encore plus de précision, voire des extraits de code du .bat et du fichier php.
Car personnellement , je ne crois pas avoir tout compris.


Si ca peut aider voici un bout de code php qui execute un .bat avec un flush qui attend la fin de l'exécution du .bat avant d'afficher la fin de la page.

Code:

flush(); 
 $executer = "start execut2.bat ";
 exec($executer);

si le .bat est long à executer, je crois me souvenir qu'il faut  paramettrer php et lui indiquer une durée maximale d'exécution.

A bientôt,

Dernière modification par ppluvinet (Mon 15 March 2010 22:04)


Pascal PLUVINET

Hors ligne

 

#3 Mon 15 March 2010 23:08

yteb
Participant occasionnel
Date d'inscription: 25 Jun 2007
Messages: 22

Re: Lancement .bat pour requetes geographiques en tache de fond

Bonsoir ppluvinet,

En effet un bout de code peut aider :-)...Voici l'appel du .bat qui pose probleme dans le code php

Code:

exec("C:\\ms4w\\Apache\\htdocs\\PREDIT_v1.0\\sig\\batch\\traitement_points_structurants.bat");

Quant au code contenu dans le .bat, je repete plusieurs fois cette operation :

Code:

@ECHO OFF

REM lancement des traitements
cd C:\Program Files\PostgreSQL\8.3\bin
psql -U postgres PREDIT < C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\batch\traitement_points_structurants.sql

:ALL_DONE

Le .bat fonctionne lorsque je le lance manuellement. Mais si je passe par un bouton sur ma page php, alors il finit par m'afficher un vieux "internal server error" car les traitements sont trop long pour le server apache. Pour ce que tu disais, il existe en effet un parametrage dans le php.ini qui permet de regler le timing max des requetes. Je l'ai deja modifie mais cela ne change rien.

Si vous avez besoin de plus d'info n'hesitez pas.

Merci d'avance

Hors ligne

 

#4 Tue 16 March 2010 08:41

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Re: Lancement .bat pour requetes geographiques en tache de fond

Pour avoir une idée, quelle est la durée de l'execution du .bat ? 5minutes, 1heure, 1 journée?
As-tu essayer avec un traitement de moins d'une minute?
As-tu la possibilité de faire un fichier LOG?
Dans ton fichier SQL, il y a sans doute plusieurs requetes, n'est-ce pas? Est-ce que la première partie s'execute?
Modifie encore le parametre dans php.ini, relance le serveur apache et utilise peut-être le bout de code que j'ai posté hier?
Ca me parait bizarre ton histoire...Mais tu vas y arriver..


Pascal PLUVINET

Hors ligne

 

#5 Tue 16 March 2010 08:57

yteb
Participant occasionnel
Date d'inscription: 25 Jun 2007
Messages: 22

Re: Lancement .bat pour requetes geographiques en tache de fond

Bonjour ppluvinet,

Pret pour une nouvelle journee de combat!!!

Pour ce qui est de tes interrogations : Le .bat peut prendre environ 1h et cela ne pose pas de problème pour les traitements plus courts. Quant au fichier log, il y est inscrit :

"Premature end of script headers: php-cgi.exe, referer: http://localhost/PREDIT_v1.0/pages/nouveau_reseau/page_5_parametres_1.php"

Si je lance le .bat a la "main", il s'execute sans probleme. Si j'utilise la commande exec pour un traitement plus court, il n'y a pas de probleme non plus. J'ai vraiment l'impression que le script php qui est envoyé et qui contient la commande exec bloque tant que le traitement contenu dans la commande exec n'est pas réalisé...et du coup je me retrouve avec internal server error et une belle page blanche...

J'avais une piste avec l'ajout de "&" a la fin de la commande exec mais apparement il s'agit d'une commande pour linux et je suis sur windows xp.

J'aimerais du coup que le batch se lance en tache de fond et que je bascule vers une page de chargement...

Hors ligne

 

#6 Tue 16 March 2010 09:16

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Re: Lancement .bat pour requetes geographiques en tache de fond

Ca fait un peu longtemps que j'ai pas fait de php.
Essai de mettre avant le exec

Code:

flush();

et fait un echo après l'exec avec un message du style : traitement fini.

Sinon,
L'idée peut être aussi de faire plusieurs exec et donc d'exploser ton fichier SQL.
Courage !


Pascal PLUVINET

Hors ligne

 

#7 Wed 24 March 2010 09:59

yteb
Participant occasionnel
Date d'inscription: 25 Jun 2007
Messages: 22

Re: Lancement .bat pour requetes geographiques en tache de fond

Bon au final apres nombre d'essais infructeux je me suis rabatu sur une solution pas tres propre mais qui m'a debloqué en attendant. En fait je fais juste appel en commande a l'explorateur windows en specifiant le chemin et le fichier et il propose d'executer mon bat, cette fois ci independamment du server. Par contre si l'utilisateur clic sur annuler ou enregistrer, ben c'est la loose...Si j'ai le temps de trouver mieux je vous retiens au courant..



Merci pour vos contributions et a bientot

Hors ligne

 

Pied de page des forums

Powered by FluxBB