Page 1 sur 1
Commande exec()
Posté : 21 févr. 2012, 13:43
par jerome@whatson
Bonjour,
Je suis complètement bloqué sur une function qui ne parrait pourtant pas bien compliqué. Merci de m'aider :
Je souhaite utiliser la commande exec() de php sur mon hébergement mutualisé dans le but d'executer un fichier php ayant pour fonction d'effectuer un traitement très long (pas de d'attente de l'internaute).
L'utilisation de cette commande fait apparemment appelle à une syntaxe qui peut être lié aux paramètres de l'hébérgement.
Que dois-je mettre dans mon fichier php lancant la commande exec :
exec('???? chemin-de-mon fichier.php ???');
Que dois-je mettre dans mon fichier php pour qu'il s'exectute bien dans un environnement php5 :
????
<?php
blabla
?>
Mon hébergement : OVH
Merci pour votre aide
Re: Commande exec()
Posté : 21 févr. 2012, 13:47
par Thibaud C
hello,
exec() ne fais qu'exécuter une ligne de commande comme si tu la plaçait dans l'invité de commande
donc un truc du genre devrait le faire :
"php /monchemin/monscript.php"
Re: Commande exec()
Posté : 21 févr. 2012, 14:10
par xTG
Note importante de la doc en relation avec ce que tu veux faire :
Si vous démarrez un programme en utilisant cette fonction et que vous voulez le laisser tourner en arrière plan, vous devez vous assurer que la sortie du programme est redirigée vers un fichier, ou un autre flux de sortie, sinon PHP attendra jusqu'à la fin de l'exécution du programme.
Re: Commande exec()
Posté : 21 févr. 2012, 14:22
par jerome@whatson
Et non, ça ne fonctionne pas.
$exec = exec('php /exec/commandes.php');
echo $exec;
et dans commandes.php
echo 'essaie';
Le navigateur tourne et fini par planter.
Une idée ?
Re: Commande exec()
Posté : 21 févr. 2012, 14:42
par Shenryu
Que te renvoie l'appel à la fonction exec() ?
Re: Commande exec()
Posté : 21 févr. 2012, 14:45
par jerome@whatson
Rien, elle mouline et plante le navigateur.
Re: Commande exec()
Posté : 21 févr. 2012, 14:47
par Shenryu
Tu peux nous mettre le contenu de tes 2 fichiers stp.
Re: Commande exec()
Posté : 21 févr. 2012, 14:52
par jerome@whatson
J'ai trouvé, autant pour moi.
Par contre si vous aviez la fin de l’instruction pour que la commande s'execute en tache de fond (redirection de la sortie)
$exec = exec('php.ORIG.5 commande.php var1 var2 ... ????');
Re: Commande exec()
Posté : 21 févr. 2012, 15:03
par jerome@whatson
Juste pour explication (parce que j'en ai chié ....) :
exec('php.ORIG.5 commande.php var1 var2 ... ????');
"exec" execute une ligne de commande (comme dans le terminal)
"'php.ORIG.5" c'est une spécification ovh qui indique que d'une on souhaite executer une commande php, et deux en php5
"commande.php" est le fichier à executer. Ce qui est déroutant (ça l'a été pour moi), c'est que l'on doit indiqué le chemin absolut du fichier à executer dans la commande exec, mais le fichier en lui même est executé en local.
"var1 var2" sont les variables à passer à commande.php elles sont récupérées par $argv[1], $argv[2], ...
Il reste la fin, je sais que c'est un truc du genre dev>null, ... qui sert à diriger la sortie ailleurs et donc évite l'attente d'une réponse mais là, si quelqu'un sait compléter...
Re: Commande exec()
Posté : 21 févr. 2012, 15:10
par Shenryu
Tu peux rediriger vers un fichier :
exec("php /path/file.php arg1 arg2 > log.txt");
Ici ça redirigera vers log.txt.
Je ne savais pas que ça exécutait en tâche de fond ceci dit.. Merci à toi et xTG pour le coup
D'une manière générale, il faut toujours travailler avec des urls absolues. Ce sera plus performants et plus sûr

Re: Commande exec()
Posté : 21 févr. 2012, 15:18
par jerome@whatson
Et bien justement, c'est le dernier argument que je cherchais. La commande en entier si l'on a pas besoin de stocker le résultat et qu'on souhaite libérer la navigation :
exec("php /path/file.php arg1 arg2 > /dev/null &");
Merci à tous
