【发布时间】:2010-12-19 09:39:32
【问题描述】:
有人能解释一下持久手表的工作原理吗?
如果它正在监视文件以进行更改,它是否会占用 PC 上的一些资源?
谢谢 ;)
【问题讨论】:
标签: node.js
有人能解释一下持久手表的工作原理吗?
如果它正在监视文件以进行更改,它是否会占用 PC 上的一些资源?
谢谢 ;)
【问题讨论】:
标签: node.js
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,并且事件循环中除了文件观察器之外没有其他内容,程序将退出。
【讨论】: