2011-10-05 11 views
4

シェルスクリプトを実行する必要があります。キャッチは、私は、それがバックグラウンド・プロセスで実行したい、私は、コマンドが終了するまで、それは待たなければいけない。このphpでバックグラウンドでシェルスクリプトを実行

$Command = "nohup cvlc input --sout '#transcode {vcodec=h264,acodec=mp3,samplerate=44100}:std{access=http,mux=ffmpeg{mux=flv},dst=0.0.0.0:8083/".output"}' &"; 
$str = shell_exec($Command); 

をしたいです。 私は他のPHPスレッドを望んでいないので、コマンドがタイムアウトするまでに3時間かかることがあります。

+0

可能な複製:http://stackoverflow.com/questions/45953/php-execute-a-background-process –

答えて

7
$str = shell_exec($Command.' 2>&1 > out.log'); 

コマンドの出力をリダイレクトする必要があります。

この機能を使用してプログラムを開始する場合は、プログラムをバックグラウンドで実行し続けるには、プログラムの出力をファイルまたは別の出力ストリームにリダイレクトする必要があります。そうしないと、プログラムの実行が終了するまでPHPが停止します。

http://php.net/manual/en/function.exec.php

7

あなたはこの1のような機能を使用してバックグラウンドでコマンドを実行してみてくださいすることができます

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

これはあなたのシェルコマンドの実行を行いますが、PHPの流れが続きます。

+0

非常に良い。このようにして機能しました。 – YumYumYum