开发者

Node.js fs.watchFile persistent watch mechanics?

Can someone explain how persistent watch works?

开发者_如何学C

Does it eat some resources on the PC if it is watching file(s) for changes?

Thanks ;)


fs.watchFile creates a StatWatcher which then performs a stat on the file that's being watched. How exactly that happens at the low level (besided doing the obvious stats call) is dependent on the event loop implementation with which node was compiled.

So yes, it takes up a bit of CPU, but at you can't do anything else besides polling here, that is, unless the underlying file system itself would issue the file change events.

See:
https://github.com/ry/node/blob/v0.3.2/lib/fs.js#L472
https://github.com/ry/node/blob/v0.3.2/src/node_stat_watcher.h#L39
https://github.com/ry/node/blob/v0.3.2/src/node_stat_watcher.cc#L78

Some more info on the parameters

Interval is relavent where inotify is not available - it determines how long to poll for updates. Persistent has to do with how the program should act when nothing but watchFile is running. The default is to exit.

As far as I saw, it takes 3--5 seconds to notice the changes (with the default settings), can i make it faster?

On linux it uses inotify - which is faster

how heavy is watching hundreds of files?

Heavy. It's not meant for that.

Source: Post on the Node.js Google Group by Ryan Dahl

In conclusion
If you're on linux, the interval option has no effect et all.
If you don't set persistent and there's nothing else in the event loop besides the file watcher, the program will exit.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜