2011-05-06 1 views
1

Donc, fondamentalement, je veux exécuter un script qui fera autour 15k fichiers pdf, et il doit être fait à partir de php shell en raison max_timeout ...Pourquoi ce processus ne s'exécute pas en arrière-plan?

serveur: Ubuntu 10.04.1 PHP: 5.3.2-1ubuntu4 0,5

Alors ce que je actuellement essayé:

function run_in_background($Command){ 
    $ps = shell_exec("nohup php5 $Command > /dev/null 2> /dev/null & echo $!"); 
    return $ps; 
} 

$ok = run_in_background('/var/www/custom/web/public/make_pdf.php'); 

if(!empty($ok)) 
    var_dump($ok); 
else 
    exit('Fail'); 

et après que je vais à la console ssh et faire ps $ps et en réponse je reçois des en-têtes seulement pas d'info - signifie sorcière processus ne fonctionne pas ...

Comment puis-je faire cela pour que cela fonctionne?

+1

essayer sans 'echo $' ou se terminant par '' &!. Si vous voulez exécuter 2 process 'inline', utilisez '&&' au lieu d'un simple '&'. exemple: 'nohup php5 $ Commande>/dev/null 2>/dev/null && echo $! & ' – jotapdiez

+0

dans ce cas $ ok est vide et le script me renvoie Echec. – arma

+0

@arma Comment avez-vous su si le processus s'est terminé avec une erreur? essayez de placer la sortie dans un fichier. – jotapdiez

Répondre

1

Essayez sans echo $! ou se terminant par &. Si vous voulez exécuter 2 process 'inline', utilisez && au lieu d'un simple &.

Exemple: nohup php5 $Command > /dev/null 2> /dev/null && echo $! &

Pour vérifier si la fin de proccess avec l'erreur faire:

nohup php5 $Command > command_stout.txt 2> command_stderr.txt && echo $! &

1

Essayez de mettre un & après commande:

$ps = shell_exec("nohup php5 $Command & > /dev/null 2> /dev/null & echo $!"); 
+0

toujours pas de dés, je reçois le pid okey mais le processus est vide. – arma

Questions connexes