2016-08-03 14 views
0

bin Ausführen eines Shell-Befehls wie unten.shell_exec blockiert den Thread nicht weiter zur nächsten Anweisungen in Windows

shell_exec('java -jar sanityTest.jar'); 
$success = array('status' => "Success",'type' => "execute"); 
echo json_encode($success); 

Der shell_exec Befehl zur nächsten Anweisung geht nicht bis zur Ausführung abgeschlossen. Ich möchte es im Hintergrund ausführen, sogar für Windows.

Ich versuchte

shell_exec('java -jar sanityTest.jar >/dev/null 2>/dev/null &'); 

, die nächste Zeile kommt aber den Befehl nicht ausführen.

+1

http://stackoverflow.com/questions/3819398/php-exec-command- oder-ähnlich-nicht-warten-auf-Ergebnis – Janno

+0

Funktion execInBackground ($ cmd) { if (substr (php_uname(), 0, 7) == "Windows") { pclose (popen ("start/B ". $ cmd," r ")); } sonst { exec ($ cmd. ">/Dev/null &"); } } – user2786092

Antwort

0

Meine Lösung: start /B *my command*

function execInBackground($cmd) { 
    if (substr(php_uname(), 0, 7) == "Windows"){ 
    pclose(popen("start /B ". $cmd, "r")); 
    } else { 
    exec($cmd . " > /dev/null &"); 
    } 
} 

verwende ich es, indem man die richtigen Keywords konnte gefunden: https://stackoverflow.com/a/21031259/6019417