5

C++、C# などについては多くの回答が見つかりましたが、Node.js についてはまだ見つかりませんでした。これが私の場合です。

FTP サーバーでファイル/ディレクトリの変更 (新規または更新、削除されたファイルを気にしない) を監視するモジュールを作成しました。新しいファイルまたは既存のファイルが変更されたことに気付くと、通知を受け取り、このファイルを Sourceforge.net に同期するようにモジュール B に通知します。モジュールは正常に動作し、変更に即座に反応します。

しかし、私がまだ満足していないのは、新しいファイルが追加されると、そのファイルはファイルサイズに応じて「変更された」イベントを数回受け取るということです。サイズが大きいほど、より多くの「変更された」イベントを受け取ります。これは、ファイルがアップロードされている間、OS が定期的にアップロードされたバッファをファイル システムにフラッシュするため、複数の「変更された」fs.watchイベントが発生するためです。

質問

ファイルがまだ開いているかどうかを確認して、ファイルが複数回変更されたためではなく、残りのデータがフラッシュされたために実際に「変更された」イベントが発生していることを確認して、無視できるようにするにはどうすればよいですか?」

ファイルが閉じられるか、書き込みが停止されると、モジュール B に通知して SF.net に同期することができます。

任意のアイデアをいただければ幸いです。ありがとう。

4

1 に答える 1

4

タイムアウトを設定してからファイルを再チェックして、サイズと変更時刻が変更されていないことを確認することを検討できます。変更されていない場合は、アップロードが完了したと想定して、ファイルを SF.net に転送します。

別のオプションは、見つけた c ソリューションに基づいてネイティブ ノード モジュールを作成することです。

いくつかの情報;

Node.js ネイティブ モジュールの概要

ただし、node-waf の代わりに node-gyp を使用してください

https://github.com/TooTallNate/node-gyp

于 2012-11-27T17:04:37.160 に答える