私はffmpegを実行するPHPスクリプトを用意しています。このスクリプトを4回実行して4つのプロセスを起動できます。私はリアルタイムで進歩を見たいと思います。各出力にどのプロセスがどのように対応しているかをどのようにして特定するのですか?複数のexec()プロセスをリアルタイムで進捗させる
$h = fopen('php://stdin', 'r'); $str = fgets($h);
私は、どの出力が標準出力にあるのか知っていますが、どうやってそれを分けるのですか?どのように出力を継続的にポーリングするのですか?プロセスが開始されると、その出力にどのようにして継続的にアクセスしますか?私はあなたがajaxが必要だが、どのようなPHPメソッドを使用して、その情報にアクセスし、他のプロセスから分離することができます知っている。 テキストファイルへの出力の指示と内容の取得を提案している人もいますが、これが唯一の方法ですか?なぜ各プロセスのテキストファイルを増やし続けるのですか?コマンドの後に2>&1 | php script.php
を使用して出力をリダイレクトする方法もあります。これは、ファイルが1回実行されてからプロセスの開始時にのみ出力されます。
私はしばらくこの問題に苦しんでおり、近づいているので、専門家の助けがあれば分かるはずです。
を参照してください編集
$process = exec("/usr/local/bin/ffmpeg -i /home/g/Desktop/cave.wmv -deinterlace -acodec libfaac -ab 96k -ar 44100 -vcodec libx264 -s 480x320 -f flv /home/g/Desktop/file.flv")
私はあなたの質問を理解するのに苦労しています..あなたはそれを少し明確だろうか?あなたは 'ffmpeg -o -'でPHPをフィードしますか?プロセスの特定とはどういう意味ですか?スクリプトにコマンドラインパラメータ($ argv)を渡して、一意の識別子を持つようにすることができます。 –
申し訳ありませんが私の編集yiを参照してください。問題は私がコマンドを実行していることです。私は$ argvを使って変数を渡す方法を知っています。このコマンドを実行すると、ファイルを別の形式に変換するプロセスが開始されます。コマンドラインにそのコマンドを入力すると、変換の進行状況を示す出力が得られます。$ h = fopen( 'php:// stdin'、 'r')でこの出力にアクセスできます。 $ str = fgets($ h);しかし、問題は、#1私は連続的に出力を得る方法を知らない#2私はこのプロセスの複数回の実行がある場合、どのように私はそれぞれの出力を得ることができますか? – Scarface
私は、一意のパラメータといくつかの情報を最初に2>&1 | PHPテスト123.php。その情報は私のために2回しか来ません。開始時にファイルにヒットし、処理が完了すると、さらに処理が開始されます。なぜ私は考えていない。進行中のバーを作成できるように、私は途中で情報を得たいと思っています。私は$ h = fopen( 'php:// stdin'、 'r')を使用しています。 while(($ str = fgets($ h))!== false) { – Scarface