Je pense qu'il y a des tonnes de postes similaires, mais je n'ai pas encore trouvé de solution après avoir cherché autour de vous.
Fondamentalement, j'essaie d'exécuter deux scripts en arrière-plan. Quand je les exécute dans la ligne de commande, je vois après avoir appelé mon premier script: p> J'ai essayé que j'ignore et exécute le second. J'ai remarqué que cela semblait suspendre là-bas et appuyer sur Entrée kbd> ramène-moi à ... script.php> / dev / null & code> avec le même résultat. Je reçois: p>
Machine: ~ Dossier> Code> P>
$output = shell_exec('/usr/bin/nohup php script.php > /dev/null &');
$output = shell_exec('/usr/bin/nohup php script2.php > /dev/null &');
3 Réponses :
Essayez: ou: p>
Je reçois un redirection de sortie ambiguë lorsque j'essaie les deux sur la ligne de commande.
quel système d'exploitation utilisez-vous et la version PHP? C'est un étrange.
Cela devrait fonctionner:
shell_exec('nohup /usr/bin/php path/to/script.php > output.txt &');
<?php function execInBackground($cmd) { if (substr(php_uname(), 0, 7) == "Windows"){ pclose(popen("start /B ". $cmd, "r")); } else { exec($cmd . " > /dev/null &"); } } // take note: to get your PHP_PATH, try looking at your phpinfo :) echo execInBackground("/usr/local/php53/bin/php 'example2.php'"); ?>
popen ('nohup ... &', 'r') code> est la seule méthode qui fonctionne pour moi dans OS X ainsi que Heroku. Une tonne d'autres solutions pour la gestion des processus d'arrière-plan détachés incl. Symfony, Cocur, et al échoués (l'exécution bloquée ou mourraient lorsque les parents meurent).