私はこのexecコマンドを持っていますが、これは問題なく実行されますが、ブラウザーを解放しません(つまり、phpタイムアウトの問題がありますが、実際のコマンドは引き続き実行されます)。
exec("/usr/local/php53/bin/php csv.php $file $user > /dev/null");
実行するps auxw
と、次の2つの実行中のプロセスが表示されます。
sh -c /usr/local/php53/bin/php csv.php /tmp/php9Pwu9e 294 >
/usr/local/php53/bin/php csv.php /tmp/php9Pwu9e 294
ただし、以下のコードを実行すると、ブラウザーはすぐに解放されますが、コマンドは実行を継続しません。
exec("/usr/local/php53/bin/php csv.php $file $user > /dev/null &");
ps auxw
実行すると、16秒後に停止する実行中のプロセスが1つ表示されます(そして、メモリをすぐに使い果たし、CPU%を大量に使用しているようです)。
/usr/local/php53/bin/php csv.php /tmp/php9Pwu9e 294
その後、プロセスは実際には何もせずに終了します。これを引き起こすアンパサンドが何をしているのかわからない。
sh -c
また、最後にアンパサンドがないのになぜ表示されるのですか?これは何かを示しているのではないかと思いますが、何がわかりません。
編集:
これは答えとして現れ続けるので、私も試しました:
exec("/usr/local/php53/bin/php csv.php $file $user > /dev/null 2>&1 &");
これは、上記と同じ問題を示しています。以下のコードは実行されますが、ブラウザーを解放しません。
exec("usr/local/php53/bin/php csv.php $file $user > /dev/null 2>&1");