当前位置: 首页 > 面试题库 >

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

古彦
2023-03-14
问题内容

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

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

谢谢 ;)


问题答案:

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并且事件循环中除了文件监视程序之外没有其他内容,程序将退出。



 类似资料:
  • 主要内容:1 数据持久化,2 RDB(Redis DataBase)快照,2.1 RDB的原理,2.1 RDB的优缺点,2 AOF(append-only file)追加,2.1 AOF的原理,2.2 AOF重写,2.3 AOF的优缺点,3 混合持久化策略详细介绍了Redis的持久化机制,包括RDB与AOF持久化,以及混合持久化。 1 数据持久化 为了重启机器、机器故障、系统故障之后恢复数据,将内存中的数据写入到硬盘里面,这就是持久化,Redis恰好支持数据的持久化,这也是相比于Memcache

  • 我知道推荐的方法是通过HP SiteScope监视WebLogic 11g。但是,我的客户尚未购买HP SiteScope许可证。 我在看http://easyloadrunner.blogspot.com/2013/07/how-to-set-up-weblogic-monitor.htmlLoadRunner似乎有一个本机WebLogic JMX监视器。 有人知道它是否支持WebLogic 1

  • Akka持久化使有状态的actor能留存其内部状态,以便在因JVM崩溃、监管者引起,或在集群中迁移导致的actor启动、重启时恢复它。Akka持久化背后的关键概念是持久化的只是一个actor的内部状态的的变化,而不是直接持久化其当前状态 (除了可选的快照)。这些更改永远只能被附加到存储,没什么是可变的,这使得高事务处理率和高效复制成为可能。有状态actor通过重放保存的变化来恢复,从而使它们可以重

  • 我正在使用网络逻辑10.3。我正在尝试配置一个持久订阅,其中包含由 jdbc 存储(在 Oracle DB 中)支持的持久消息。我有一个主题,MDB 正在作为持久订阅者侦听该主题。在场景-1下:如果我发送消息,它会命中MDB。 在场景2中:我挂起了MDB,希望发送到主题的消息只要不被MDB(它是唯一注册的持久订阅者)使用,就会一直存在。但是当我向主题发送消息时,它短暂地出现在那里,然后就消失了(我

  • Spark通过在操作中将其持久保存在内存中,提供了一种处理数据集的便捷方式。在持久化RDD的同时,每个节点都存储它在内存中计算的任何分区。也可以在该数据集的其他任务中重用它们。 我们可以使用或方法来标记要保留的RDD。Spark的缓存是容错的。在任何情况下,如果RDD的分区丢失,它将使用最初创建它的转换自动重新计算。 存在可用于存储持久RDD的不同存储级别。通过将对象(Scala,Java,Pyt

  • Redis 支持持久化,即把数据存储到硬盘中。 Redis 提供了两种持久化方式: RDB 快照(snapshot) - 将存在于某一时刻的所有数据都写入到硬盘中。 只追加文件(append-only file,AOF) - 它会在执行写命令时,将被执行的写命令复制到硬盘中。 这两种持久化方式既可以同时使用,也可以单独使用。 将内存中的数据存储到硬盘的一个主要原因是为了在之后重用数据,或者是为了防