【问题标题】:Node.js fs.watchFile persistent watch mechanics?Node.js fs.watchFile 持久监视机制?
【发布时间】:2010-12-19 09:39:32
【问题描述】:

有人能解释一下持久手表的工作原理吗?

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

谢谢 ;)

【问题讨论】:

    标签: node.js


    【解决方案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,并且事件循环中除了文件观察器之外没有其他内容,程序将退出。

    【讨论】:

    • 设置手动轮询比设置持久监视更好吗?
    • persistent 参数对观看本身没有任何影响。如果您设置它,当事件循环中剩下的唯一回调正在监视文件时,程序将退出。请参阅我的更新答案。
    • Ivo,作为提醒,我在另一个问题中引用了您的答案:stackoverflow.com/questions/5567457/…
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2019-07-14
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2016-09-17
    相关资源
    最近更新 更多