2016-08-03 2 views
0

Выполнение команды оболочки, как показано ниже.shell_exec блокирует поток, не переходя к следующим операторам в окнах

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

Команда shell_exec не будет следующей инструкции до выполнения полной. Я хочу выполнить его в фоновом режиме, даже для Windows.

Я попытался

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

, который подходит к следующей строке, но не выполняет команду.

+1

http://stackoverflow.com/questions/3819398/php-exec-command- или-like-to-not-wait-for-result – Janno

+0

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

ответ

0

Мое решение: использовать 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 &"); 
    } 
} 

я мог бы найти его, глядя на правильные ключевые слова: https://stackoverflow.com/a/21031259/6019417