一尘不染

Node.js fs.watchFile持久监视机制?

node.js

有人可以解释持续监视的工作原理吗?

如果它正在监视文件中的更改,是否会占用PC上的某些资源?

谢谢 ;)


阅读 323

收藏
2020-07-07

共1个答案

一尘不染

fs.watchFile创建一个StatWatcher,然后在stat要监视的文件上执行。在底层(除了执行明显的stats调用之外)到底发生了什么,取决于编译该节点的事件循环实现。

因此,是的,它占用了一些CPU,但是除了在此处进行轮询之外,您无能为力,也就是说,除非基础文件系统本身会发出文件更改事件。

参见:
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

有关参数的更多信息

在无法使用inotify的情况下,间隔是相对的-它确定轮询更新的时间。持久性与当watchFile不在运行时程序应如何操作有关。默认为退出。

据我所知,(使用默认设置)注意到更改需要3–5秒,我可以使其更快吗?

在Linux上,它使用inotify-速度更快

观看数百个文件有多重?

重。这不是为了那个。

资料来源:Ryan Dahl 在Node.js Google
Group
上的帖子

结束语
如果您使用的是Linux,则该interval选项完全无效。
如果未设置,persistent并且事件循环中除了文件监视程序之外没有其他内容,程序将退出。

2020-07-07