ファイルの監視

Posted by Ken on 23rd, 2009

効率のよい、ファイルの監視はどうすべきなのだろうか?
特定のディレクトリ配下を毎回全スキャンしても、平気なくらいのファイル数しかないが、それでも0.5秒に一回スキャンするのはちょっと・・・と思いつつ、ファイルをハッシュで管理しても、変更があったか確認するために変更時刻は比較してるしなぁ。
変更時刻を得る処理は重たいのか?
この辺は・・・カーネル関係の本が必要?

ちょっと調べたらこんな感じ。
■ファイル更新の監視 どう書く?org
http://ja.doukaku.org/15/nested/#comment461
・・・って自分で書いたのと変わらない。
これでいいのかな?

.Net FrameworkにはFileSystemWatcherなるものがあるらしい。
■FileSystemWatcher クラス (System.IO)
http://msdn.microsoft.com/ja-jp/library/system.io.filesystemwatcher(VS.80).aspx

アセンブリ: System (system.dll 内)

なんて書いてあるけど、こいつはカーネルレベルで監視!?
どっちにしても.Netは関係ないんだけど :roll:

2 Responses to “ファイルの監視”

  1. Hanezo

    .NetというかWindows APIでディレクトリの監視やファイルの監視ができます。
    この仕様は昔からです。

    あんまり良くわからないけど、UNIX系の正攻法はこれでしょう?
    http://ja.doukaku.org/15/nested/#comment3698
    tailの実装を参考にするのは目の付けどころが素晴らしいです。
    たぶんこれに似たようなものはUNIX系でも昔からあると思います。

    基本的にイベントハンドリングでパフォーマンスを追求するなら、カーネルの設計ポリシーが違う以上、環境依存になるのは仕方ないですね。

    ネットワーク(ファイル)イベントの取得にしても、
     select (Winsockでもサポート?)
     poll (POSIXならOK?)
     epoll (Linux限定?)
    という感じで、イベントのハンドリングはスピードが増せば、
    その分だけ環境依存になっています。

    あとは必要な性能とコストとのバランスですね。


  2. Ken

    やっぱりカーネルで監視ですよね~。
    Pythonだし、Windowsでも使うことありそうなので、環境依存にしたくないなぁ~というところです。

    ラップしてくれるライブラリがありそうな気がして調べたらこんなの発見。
    ■py-kqueue – スコトプリゴニエフスク通信
    http://d.hatena.ne.jp/perezvon/20080330/1206879201
    あとで読もうっと。


Leave a Reply



Search


SUBSCRIBE

  • 最近のコメント

  • カテゴリー

  • タグ

    Amazon Android au BeagleBoard blog CMS Compiz Fusion Django DVD Google HT-03A iPhone ISMS Linux LUMIX LUMIX G1 MacBook MySQL Workbench OpenX Poken Python server Software Design SOY CMS TinyMCE Ubuntu Ubuntu 9.04 Vim VirtualBox WordPress wwwsqldesigner XenServer XMind しろいくも オトノハコ ハルフウェイ マンガ 岩岡 ヒサエ 帰省 広告 望遠鏡 桜井亜美 花粉症