0

動画をexec()、FFMPEG phpで変換したいです。バックグラウンドでスクリプトを実行したいと思います。どうやってやるの?

/*** convert video to flash ***/ 

$v = date('H-i-s');

//   exec("ffmpeg -i uploaded_files/770530705510e88ec723a3-20130111_1221_43.avi -ar 22050 -ab 32 -f flv -s 320x240 flash/".microtime()."video.flv 1> flash/".$v."_block.txt 2>&1");

$cmd = 'ffmpeg -i uploaded_files/770530705510e88ec723a3-20130111_1221_43.avi -ar 22050 -ab 32 -f flv -s 320x240 flash/'.microtime().'.flv';

$outputfile = $v.'.txt.';
$pidfile = $v.'_id.txt.';

      exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));

これは私のコードですが、何もしないでください。php でスクリプトを実行したいのですが、スクリプトが完了するまで http の読み込み時間を待ちたくありません...

または、exec(); で something.php を実行するにはどうすればよいですか? ? php を実行できれば、必要なものを簡単に作成できます。(Linux デビアン、Apache2、php5)

4

1 に答える 1

1

最良の方法は、ジョブをキューに追加し、サーバーに非同期で ffmpeg 変換を処理させることです。

ユーザーは、サーバーが既にジョブを終了しているかどうかを手動で再確認する必要があります。

次のようなことをしなければなりません:

  1. キュー データベース テーブルを作成します。
  2. 新しい ffmpeg 変換を行う必要がある場合は、ジョブをキュー テーブルに追加します。
  3. サーバーで、自動的に新しいジョブを探して ffmpeg 変換を実行する cronjob を追加します。詳細はこちら。
  4. cronjob が変換を終了したら、ジョブを完了としてマークするか、削除するか、その他何でも行います。
于 2013-02-09T14:35:03.707 に答える