Bonjour à tous,
La question que j'ai est un peu technique... Ne sachant pas trop où la poser, je la met ici, même si elle concerne plus Apache, à mon avis.
Voici mon problème:
J'ai un exécutable que je lance depuis mon script PHP à l'aide d'un:
exec("/usr/bin/appli --pipe=/tmp/monpipe &");
Comme vous pouvez le voir, je lui passe un pipe qui me permet de la commander depuis une application externe (ici, en l'occurrence, c'est pour garder la main dessus, malgré les diverses requêtes). J'aurais créer ce pipe préalablement avec :
posix_mkfifo('/tmp/monpipe', 0777);
Ensuite, au requêtes suivantes, j'essaye d'arrêter mon application en lui envoyant une commande:
exec("echo quit > /tmp/monpipe");
Et là, ça ne marche pas, quand elle est exécuté depuis apache.
Quand je lance en utilisateur:
1 2
| $ /usr/bin/appli --pipe=/tmp/monpipe &
$ echo quit > /tmp/monpipe |
Elle se lance et s'arrête sans soucis.
Quand je lance les scripts PHP sans apache:
1 2
| $ php launch_appli.php
$ php quit_appli.php |
Elle se lance et s'arrête sans soucis, également.
Mais quand je les exécutes depuis apache, l'application s'exécute bien, et tourne dans les taches. Mais pour l'arrêt, c'est comme si l'application n'avait jamais pris le pipe. L'arrêt depuis apache coince, ainsi que:
Ça coince.
$ echo quit > /tmp/monpipe
Ça coince aussi (aucune réponse). C'est ce que ça fait lorsque que lance cette commande sans avoir d'application en écoute de l'autre coté.
Donc, par déduction, ce doit être une sécurité de apache quelque part en empêche de genre de chose. Mais toute mes recherches sont restés infructueuses.
Si quelqu'un à une idée là dessus, je suis preneur (je planche sur ce problème depuis plusieurs mois)
Merci beaucoup
Snark.
Partager