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

时间:2010-12-19 09:39:33

标签: node.js

有人可以解释持久手表的工作原理吗?

如果正在观看文件的变化,是否会在PC上占用一些资源?

谢谢;)

1 个答案:

答案 0 :(得分:10)

fs.watchFile创建一个StatWatcher,然后对正在观看的文件执行stat。在低级别(除了执行明显的统计信息调用)之前是如何发生的,取决于编译节点的事件循环实现。

所以是的,它占用了一点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

有关参数的更多信息

  

Interval是无法使用inotify的相关因素 - 它决定了   轮询更新的时间。   持久性与程序应该如何行动有关   watchFile正在运行。默认是退出。

     
    

据我所知,需要3-5秒才能注意到这些变化     默认设置),我可以加快速度吗?

  
     

在linux上,它使用inotify - 更快

     
    

观看数百个文件有多重?

  
     

重。它并不意味着这一点。

来源:Ryan Dahl在Node.js Google Group发帖

总结
如果您使用的是Linux,interval选项对所有人都没有影响 如果你没有设置persistent,除了文件观察器之外,事件循环中没有其他内容,程序将退出。