3

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 &' は何の略ですか? プロセスの詳細をファイルにダンプしたいのですが、どうすればよいですか?

どうもありがとうございました。

4

4 に答える 4

10

2>&1« stderr»« stdout»にリダイレクト&し、最後にコマンドをバックグラウンドで実行します。

それを完成させるには、

«command» 2>&1 > /tmp/somefile.log &

« » をバックグラウンドで実行されstdoutているファイル (または) にリダイレクトしないと、あまり意味がありません。PHP が終了するとすぐにコマンドが強制終了されるためです (制限時間に達するなど)。/dev/nullsystem()

system()マニュアルから:

注: プログラムがこの関数で開始された場合、バックグラウンドで実行を継続するには、プログラムの出力をファイルまたは別の出力ストリームにリダイレクトする必要があります。そうしないと、プログラムの実行が終了するまで PHP がハングアップします。

于 2009-04-20T16:49:03.740 に答える
1

2>&1 は、標準エラー (2) ログを標準出力 (1) にリダイレクトします。

余分な & が最後に何をするのかわかりません。

stderr または stdout をファイルにパイプする場合は、簡単に実行できます。

stderr をファイルにパイプするには、2>&1 を 2>filepath に変更します。

ファイルパスはできれば絶対ファイルパスです (例: 2>/home/user/output.mpg)

于 2009-04-20T16:49:17.297 に答える
0

PHP 経由でファイルに書き込みたい場合は、コマンドからすべてのコンテンツを返すオプションを持つ[exec()][1]orを使用することもできます。最後の行のみを返します。[passthru()][2]system()

于 2009-04-20T17:01:04.770 に答える