Page 1 sur 1
Arriere plan
Posté : 25 juil. 2005, 17:19
par seinto28
Bonjour a tous,
Je reviens un peu à la charge avec mon priblème que j'avais en partie résolu ici mais il m'en reste encore un.
J'explique:
J'execute un script shell à apartir de php à l'aide de la commande exec()
Mais mon script shell contient une boucle (executant une requete SQL) et est long à executer.
Or exec() attend la fin de l'execution pour redonner la main à php.
J'aimerais donc faire tourner ce programme en arriere plan puisque le résultat est stoqué dans ma table sql et peut etre consultable apres la deconnexion de l'utilisateur.
Ni nohup, ni le & ne semble fonctionner.
J'espere que vous pourrez m'aider.

Posté : 25 juil. 2005, 17:44
par ouckileou
tu as regardé dans la doc ce qu'ils disaient ?
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.
tu as essayé ?
Posté : 25 juil. 2005, 17:57
par seinto28
oui, j'ai essayé mais mêm résultat!!
exec("./code.sh & > sortie.txt");
Posté : 25 juil. 2005, 19:22
par ouckileou
hum bizarre ta redirection
regarde dans la doc on dirait plutôt que c'est un deuxième argument
string exec ( string command [, array &output [, int &return_var]] )
Posté : 26 juil. 2005, 09:34
par seinto28
Je pensais que la redirection se faisait comme en ligne de commande. J'ai essayé ça mais même resulat:
exec("./code.sh & > sortie.txt", $resultat, $erreur);
Posté : 26 juil. 2005, 09:38
par ouckileou
oui mais tu laisses ta redirection classique en place, et est-ce que $resultat représente un fichier ?
je n'ai jamais utilisé donc je ne peux pas te conseiller plus précisément je ne fais que lire la doc

Posté : 26 juil. 2005, 09:49
par seinto28
J'ai essayé avec ou sans la redirection classique : idem.
Mon $resultat est difini comme ;
$resultat='redirection.txt';
et le fichier existe déja.
J'ai lu la doc aussi mais il ne propose pas vraiment de solution a ce problème

Posté : 26 juil. 2005, 09:54
par ouckileou
regarde dans les commentaires de gens, il y a souvent des astuces
certains utilisent effectivement la redirection classique, comme cet exemple
<?PHP
function myspawn()
{
$command="/usr/local/bin/mybinary infile.txt > outfile.tx2";
exec($command);
## nothing worked for me until I added this next line.
exec("exit(0)");
}
?>
moi je ne peux pas trop t'aider plus que ça

Posté : 26 juil. 2005, 09:56
par seinto28
J'ai trouvé!!!!
Et bah, c'était vraiment tres bete ; je ne plaçais pas au bon endroit mon &, je fait donc, pour ce que ça interesse:
et non:
Mais merci beaucoup à toi ouckileou, ça m'a poussez a reflechir autrement pour t'expliquer et voila!!

Posté : 26 juil. 2005, 09:57
par mere-teresa
J'ai trouvé!!!!
Résolu alors ?
Posté : 26 juil. 2005, 09:57
par ouckileou
cool
[Résolu] ?