Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2440 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [résolu] Exec() dans un fichier batch

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] Exec() dans un fichier batch

n°2057260
sebnutt
Un petit rien du tout
Posté le 16-02-2011 à 11:31:44  profilanswer
 

bonjour à tous,
 
j'ai besoin de traiter par batch de nuit via un fichier PHP des enregistrements retournés par une requete SQL.
 
le souci est qu'à terme ce sont plus de quelques centaines d'enregistrements qui doivent etre traités par ce batch.
 
je sui en mutu, donc pas d'accès au serveur en SSH, donc j'ai pensé à faire un truc du genre pour pouvoir éxécuté mon script sur l'ensemble des enregistrements retournés :
 
- SELECT pour extraire les enregistrements concernés  
- ensuite je fais une boucle pour faire une commande EXEC qu va exectuter le script de traitement par tranche.
 
comment dois-je écrire mon script PHP ?
 
j'avais pensé à un truc du genre (lorsque ma requete me retourne 2000 lignes à traiter par lot de 10, par ex) :
 

Code :
  1. for($i=0;$i<2000; $i += 10) :
  2. exec("php monscript.php?start=".$i);
  3. endfor;


 
mais je ne suis pas sûr de la ligne 2. Chemin absolu à indiquer ?
Merci de votre aide.


Message édité par sebnutt le 17-02-2011 à 09:46:23
mood
Publicité
Posté le 16-02-2011 à 11:31:44  profilanswer
 

n°2057287
rengzehn
Posté le 16-02-2011 à 13:50:46  profilanswer
 

tu vas faire comment pour planifier la tache sur du mutualisé ?

n°2057291
sebnutt
Un petit rien du tout
Posté le 16-02-2011 à 14:08:58  profilanswer
 

OVH propose un CRON pour ses offres mutualisées


Message édité par sebnutt le 16-02-2011 à 14:12:06
n°2057300
rengzehn
Posté le 16-02-2011 à 14:30:33  profilanswer
 

ils font les choses bien chez OVH :D

 

hum pourquoi tu ne fais pas tes requetes SQL directement dans ton fichier php ? je pîge pas pourquoi tu veux faire ça par tranches.
dans ton cron tu executes le fichier php la nuit, pis voila.
pour les chemins ué perso je mets des chemins absolus au cas ou les path ne soient pas dans les environnements.


Message édité par rengzehn le 16-02-2011 à 14:31:58
n°2057305
sebnutt
Un petit rien du tout
Posté le 16-02-2011 à 14:37:19  profilanswer
 

pour chaque enregistrement résultant de ma requete, j'ai trois requetes SQL à passer (mises à jour de profils, etc..)
 
donc quand je me retrouverai avec 2000 lignes à traiter, j'aurai 6000 requetes à passer. Avec un timeout de 30 se j'aurais jamais le temps de tout traiter en une fois.
 
D'ou l'idée d'executer plusieurs fois le script en meme temps.

n°2057347
rengzehn
Posté le 16-02-2011 à 16:11:33  profilanswer
 

max_execution_time : This sets the maximum time in seconds a script is allowed to run before it is terminated by the parser. This helps prevent poorly written scripts from tying up the server. The default setting is 30. When running PHP from the command line the default setting is 0.
 
donc si t'appelles php en lui envoyant un script ça doit etre bon, pas de timeout.

n°2057358
sebnutt
Un petit rien du tout
Posté le 16-02-2011 à 17:24:22  profilanswer
 

ce serait donc si simple ?
je vais tester et je te dis ce qu'il en est.
 
Merci en tous cas.

n°2057363
sebnutt
Un petit rien du tout
Posté le 16-02-2011 à 17:41:56  profilanswer
 

Code :
  1. <?php exec("usr/local/bin/phpphp /homez.XXX/monsite/www/cron.php" ); ?>


 
n'execute pas le script (censé juste mettre à jour ma BDD)
cron.php exécuté depuis mon navigateur, oui.
 
j'y comprends rien.


Message édité par sebnutt le 16-02-2011 à 17:42:30
n°2057364
rengzehn
Posté le 16-02-2011 à 17:44:59  profilanswer
 

loule :))) non fais pas comme ça, php avec un exec de php sur un php  :pt1cable: autant faire un require :D

 

il est proposé comment le service cron d'OVH ? comment il s'utilise ?

 

tu fais un btach avec /.../php -f fichier.php

 

je crois que pour passer un fichier à php c l'option -f (ou -e je c plus je confonds avec perl)


Message édité par rengzehn le 16-02-2011 à 17:52:41
n°2057365
rengzehn
Posté le 16-02-2011 à 17:48:19  profilanswer
 

http://guides.ovh.com/MutualiseCron

 

si c juste ça (screen du bas) tu mets juste ton cron.php dans "script à exécuter"

 

ou bien

 

http://www.ovh.com/fr/hebergement_ [...] rontab.xml


Message édité par rengzehn le 16-02-2011 à 17:51:58
mood
Publicité
Posté le 16-02-2011 à 17:48:19  profilanswer
 

n°2057366
sebnutt
Un petit rien du tout
Posté le 16-02-2011 à 17:57:08  profilanswer
 

dans ce cas-là, je ne serai pas concerné par le temps d'exécution du script, je viens de penser à ça ?
 
je vais faire  le test, 1000 mercis.

n°2057367
rengzehn
Posté le 16-02-2011 à 17:59:50  profilanswer
 

non tu seras pas concerné par le timeout à prioris c'est leur cron qui appelra ton fichier avec php (spour ça qu'il y a un menu déroulant qui demande le type du fichier que tu osuhaites). Enfin, je suppose :)
 
essaye un
 
sleep(50);
echo "plop";

n°2057418
sebnutt
Un petit rien du tout
Posté le 16-02-2011 à 22:42:01  profilanswer
 

je confirme : d'après les logs de test, le script cron.php est bien lancé en ligne de commande automatisée.
 
C'est tout bon.


Message édité par sebnutt le 16-02-2011 à 22:42:09

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [résolu] Exec() dans un fichier batch

 

Sujets relatifs
Découpez un fichier xmlCréation de fichier multiples
[Résolu]Besoin d'aide pour batchdans quel fichier inclure mabibli.h
[Batch] Pétage de cable; start affinité CPU 1[VBA Excel] Copie de données d'un fichier vers un autre
problème macro import fichier text excelSPIP: afficher le fichier css selectionné
Parser un fichier BibTex pour l'insérer dans une bdd MySQL[BATCH/DOS] rechercher/remplacer un ensemble de ligne par d'autres
Plus de sujets relatifs à : [résolu] Exec() dans un fichier batch


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR