2010-10-30 4 views
1

J'essaie d'exécuter un programme Java en arrière-plan en utilisant PHP. Je suis capable de lancer le programme mais la page ne se charge pas jusqu'à ce que le programme java termine l'exécution.exécuter le programme java en arrière-plan lors du chargement d'une page en utilisant php

Je suis capable d'exécuter des scripts shell en arrière-plan en utilisant php. Mais si je donne la même commande pour Java, elle ne fonctionne pas en arrière-plan.

$command = "java hello"; 
$outputfile = "out1"; 
$pidfile = "out2"; 
exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $command, $outputfile, $pidfile)); 

Comment puis-je exécuter le programme en arrière-plan?

Répondre

0

Dans le php docs pour exec il dit:

Si un programme est démarré avec cette fonction, afin qu'il continue de fonctionner en arrière-plan, la sortie du programme doit être redirigés vers un fichier ou d'une autre flux de sortie. Si vous ne le faites pas, PHP sera bloqué jusqu'à la fin de l'exécution du programme.

si vous avez besoin de changer la sortie du javafile à un autre terminal, et non php ou à un fichier peut-être/dev/null

+0

J'ai le même problème, ça ne fonctionne pas avec "java hello>/dev/null". Mais cela fonctionne avec n'importe quelle autre commande. – zengr

2

Je suis que cela fonctionne avec les éléments suivants:

shell_exec('java app.jar > /dev/null &'); 
exit(); 

Spécifiquement, j'essayais de lancer quelques processus séparés à travers un script dans une étape de construction de TeamCity.

Questions connexes