php システム コマンドでは、次のように使用します。
system("ffmpeg -i test.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv output_file.flv 2>&1 &").
上記のシステムコマンドの使い方を教えてください。'2>&1 &' は何の略ですか? プロセスの詳細をファイルにダンプしたいのですが、どうすればよいですか?
どうもありがとうございました。
php システム コマンドでは、次のように使用します。
system("ffmpeg -i test.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv output_file.flv 2>&1 &").
上記のシステムコマンドの使い方を教えてください。'2>&1 &' は何の略ですか? プロセスの詳細をファイルにダンプしたいのですが、どうすればよいですか?
どうもありがとうございました。
2>&1
« stderr
»を« stdout
»にリダイレクト&
し、最後にコマンドをバックグラウンドで実行します。
それを完成させるには、
«command» 2>&1 > /tmp/somefile.log &
« » をバックグラウンドで実行されstdout
ているファイル (または) にリダイレクトしないと、あまり意味がありません。PHP が終了するとすぐにコマンドが強制終了されるためです (制限時間に達するなど)。/dev/null
system()
system()
マニュアルから:
注: プログラムがこの関数で開始された場合、バックグラウンドで実行を継続するには、プログラムの出力をファイルまたは別の出力ストリームにリダイレクトする必要があります。そうしないと、プログラムの実行が終了するまで PHP がハングアップします。
2>&1 は、標準エラー (2) ログを標準出力 (1) にリダイレクトします。
余分な & が最後に何をするのかわかりません。
stderr または stdout をファイルにパイプする場合は、簡単に実行できます。
stderr をファイルにパイプするには、2>&1 を 2>filepath に変更します。
ファイルパスはできれば絶対ファイルパスです (例: 2>/home/user/output.mpg)
PHP 経由でファイルに書き込みたい場合は、コマンドからすべてのコンテンツを返すオプションを持つ[exec()][1]
orを使用することもできます。最後の行のみを返します。[passthru()][2]
system()