2011-08-28 14 views
5

私はCentOS上でApacheでphpを使用しています。 私はユーザーにサービスを提供する必要があります。クリックすれば大きなファイルを削除できます。 shell_execを使用しようとしています。 ですが、バックグラウンドでは実行されません。 これが実行され、ユーザーは待機します。shell_execはバックグラウンドで実行されません。

私のコマンド:

$ D_command = "RM -rf動画/ '$ MDELETE'"。

shell_exec($ D_command);

ありがとう!

答えて

4

ass &コマンドの最後に。

$D_command="nohup rm -rf videos/'$Mdelete' > /log/deletedfile.log 2>&1 &"; 
+0

最初に必要な場合はnohupを追加できます。 "nohup rm -rf videos/'$ Mdelete'&" –

+0

nohupを追加する必要があります。そうしないと、プロセスはapacheとして生成され、スレッド化されません。 –

+0

それを試してみてください。ユーザーの待ち時間が残っています... – user692601

0

execを使用して

rm -rf videos/'$Mdelete' & 

を実行してみてください。私はこれはかなり古い質問ですけど、私は同じ問題があったが、これだった

popen($D_command, 'r') 
+0

nohupをコマンドの冒頭に追加する必要があります。これは、バックグラウンドでプロセスを実行するようにPHPインタープリタに指示します。コマンドの出力を返すのではなく、プロセスID –

+0

を返します。試しました。まだユーザ待ちをしています... – user692601

+0

@ user692601 'exec'や' shell_exec'を使ってみましたか? –

0

に実行することを示していますexecにしようとして失敗した後にのみ作動溶液、shell_execprocess_open

$process = popen("nohup $D_command > /dev/null 2> /dev/null & echo $!", 'r'); 
$pid = fread($process, 32); 
0

:アンパサンドはこれを試してみてください背景