11
votes

Shell_exec php avec nohup

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> xxx pré>

J'ai essayé ... script.php> / dev / null & code> avec le même résultat. Je reçois: p> xxx pré>

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 à 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 &');


0 commentaires

3 Réponses :


12
votes

Essayez: xxx

ou: xxx


2 commentaires

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.



2
votes

Cela devrait fonctionner:

shell_exec('nohup /usr/bin/php path/to/script.php > output.txt &');


0 commentaires

2
votes
<?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'");
?>

1 commentaires

popen ('nohup ... &', 'r') 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).