2011-06-10 7 views
1

私はPHPのアップローダスクリプトを持っており、最後にアップロードされたファイルの変換のためのffmpegスクリプトを開始します。次に、ビデオ情報をmysqlデータベースに挿入し、ステータスフィールドにファイルが処理されているので0の値を挿入します。プロセスを別のプロセスの後に実行するように設定するにはどうすればよいですか?

私は、linux ffmpegコマンドと一緒に、phpファイルを実行する遅延プロセスを置くことができると考えていたので、ファイルが変換されてffmpegプロセスが完了した後、phpファイルが実行され、ステータスの下にあるmysqlデータベースのビデオエントリを1に更新することができます。これを行うには、ビデオIDを端末に渡してPHPファイルに渡す必要があります。誰でもこれを行う方法はわかりますか?

$sql = 'INSERT INTO video (id, uploader, video_id, status) VALUES(?,?,?,?)'; 
$stmt3 =$conn->prepare($sql); 
$result=$stmt3->execute(array($id,$username,$video_id,0)); 

$command = shell_exec('/usr/local/bin/ffmpeg -i /home/g/Desktop/'.$id2.' -acodec libfaac -aq 100 -vcodec libx264 -preset slow -crf 22 -threads 0 /home/g/Desktop/'.$id2.'.flv'); 

答えて

1

これを試してみてください:

$command = shell_exec('/usr/local/bin/ffmpeg -i /home/g/Desktop/'.$id2.'' . 
    '-acodec libfaac -aq 100 -vcodec libx264 -preset slow -crf 22 -threads 0' . 
    '/home/g/Desktop/'.$id2.'.flv && /usr/bin/php /home/g/bin/update_db.php ' . $id2); 

それはffmpeg(1)コマンドが成功した場合'/usr/bin/php /home/g/bin/update_db.php ' . $id2を実行すると言います。 (失敗する可能性があります)

これをシェルで試すにはtrue && echo hifalse && echo hiです。

+0

ですから、$ id2が投稿されているか、update_db.phpになっていますか?あなたはファイルの中で何を参照していますか? – Scarface

+1

@Scarfaceの場合、おそらく['$ argv [1]'または '$ argv [2]'](http://php.net/manual/en/reserved.variables.argv.php)になります。 ( '$ argv [0]'がPHPインタプリタ '/ usr/bin/php'であるかどうか、' $ argv [0] 'がPHPスクリプト'/home/g/bin/update_db .php'。しかし、いくつかの小さなテストが表示されます。:) – sarnold

+0

それは、sooooooo多くのsarnoldありがとう、動作します。あなたは最高です。 – Scarface

関連する問題