2011-12-21 12 views
3

ffmpegを使ってビデオトランスコーダーを作成しました。ユーザーはRAWビデオをFTP経由でアップロードします - 非常に大きく、約20GB -ファイルのアップロードが完了したときに通知する最も良い方法

現在、PHPスクリプトは、以下の戦略で5秒ごとにローカルパスを監視しています。

  1. ローカルファイルシステムをルックアップします。
  2. 「新しい」ファイルが表示された場合は、変更された時間とサイズのデータ​​ベースに追加します。
  3. 5秒後に、再び変更時間とサイズを確認し、
    1. 変更されていない:[DONE]として設定する状態を、そして「./output」ディレクトリにビデオをエンコードします。 ( '出力'は明示的に監視から除外されています)
    2. 変更:さらに5秒待ってください。

それは非常にうまく動作しますが、それは新しいファイル」を見つけるためにいくつかのCPUパワーを燃やします。ファイルのアップロードが完了しているときに「正確なタイミング」を得る方法はありますか?

+0

、それはPHPで行われなければならない:PHPがでinotifyをサポートしていますか?また、「./output 'ディレクトリにビデオをエンコードする」と言うと、それを出力ディレクトリにコピーするという意味ですか? – Abbas

+1

可能であれば、inotifyをインストールし、bashスクリプトを使って簡単にインストールすることができます。さもなければ、bashスクリプトは依然としてより効率的です。 –

+0

@AbbasそれはLinux上で動作し、私はPHPまたはPythonでそれをやりたいと思います。 'encode'はビデオがffmpegでエンコードされ、その結果が './output'ディレクトリに保存されることを意味します。 – lqez

答えて

1

あなたは、bashスクリプトを経由して、その後はinotifyその超簡単にインストールすることができます。さもなければ、bashスクリプトは依然としてより効率的です。

更新:あなたのOSは何@Iqez php.net/manual/en/book.inotify.php

1

新しいファイルをチェックするperlデーモンを作ってみてください。これは、リソースが少なくて済むと思います。また 、他の多くの選択肢のように、UNIX、および私はより良い全体的に考えて: http://en.wikipedia.org/wiki/File_Alteration_Monitor

+0

あなたの助けてくれてありがとう! – lqez