executer en arriere-plan un script shell a partir de php

seinto28
Invité n'ayant pas de compte PHPfrance

20 avr. 2005, 17:20

Bonjour a tous,

Je vais essayer d'etre clair,

J'execute un commande shell dans un fichier shell executable via une page php et comme l'execution est longue, je veux utiliser nohup pour que php n'attende pas le retour, le problème est que php n'execute plus ce script avec nohup.

Par exemple,

Si je fais :

exec("locate *.php > sortie.txt");
->ça marche

mais si je fais :

exec("nohup toto.sh &")

avec toto. sh contenant :
locate *.php > sortie.txt

et le fichier mis en executable (chmod +x)
ça ne marche plus?!!

Est-ce que quelqu'un sait d'ou ça peut venir?

Merci

Eléphant du PHP | 287 Messages

20 avr. 2005, 17:40

salut,

passe déja en mode console et tape ta commande.
nohup locate *.php &
regarde bien ta sortie et renseigne toi sur le fonctionnement de nohup :wink:


thierry

Invité
Invité n'ayant pas de compte PHPfrance

22 avr. 2005, 09:55

Salut,

J'ai suivi ces precieux conseils et j'ai trouvé d'ou venait l'erreur mais je ne sais pas la resoudre.
En fait quand on lance une application avec nohup, pour recupérer la main, il faut appyuer sur entrée (je sais c'était tout bete) mais comment fait on cela apartir de php?

exec('nohup ma_commande &');
et ensuite??
:wink:

Eléphant du PHP | 413 Messages

22 avr. 2005, 14:33

vu sur la doc de la fonction "exec" :
http://www.php.net/manual/fr/function.exec.php

Note : 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.

ça peut t'aider...
--
Goeb

Seinto28
Invité n'ayant pas de compte PHPfrance

22 avr. 2005, 15:24

Oui, je sais (apres plusieurs recherches) que php attend le retour, c'est pour ça que j'utilise nohup, qui cré un nohup.out qui va servir de retour. Le probleme est qu'a la creation de ce fichier, il y a un commentaire que l'on doit valider par entré pour retrouver la main.

Merci