我正在研究更多的安全仪表板,它监视整个主目录中包含数百个站点(所有Joomla,所以很多文件)的文件更改。NodeJS大型目录文件更改
为了保持潜在的安全问题,我们希望以有效的方式监视文件更改,而不会产生不必要的CPU /内存开销。我们希望以更快的时间间隔观看它,但是我更了解它的一个平衡行为,当你想避免使用更多的cpu时,则需要一个旁路过程。
我曾尝试使用“手表”用下面的代码,在主目录中运行:
var watch, fs;
watch = require('watch');
fs = require('fs');
watch.createMonitor(__dirname,{interval:500,filter:function(file,stat){
if(file.indexOf('index.php')!=-1){
return true;
}else{
return false;
}
}},function(monitor){
monitor.filter(function(file){
console.log(file);
})
monitor.on('created',function(file,stat){
console.log(file + ' new');
});
monitor.on('changed',function(file,stat){
console.log(file + ' changed');
});
monitor.on('removed',function(file,stat){
console.log(file + ' deleted');
});
});
但是这个尖峰CPU的单核(有时2)超过100%出8记忆也很快占用8GB的20%。这只是为了在所有文件上创建监视事件,因此它在它实际检测到任何文件更改之前。
我知道这个问题,它是通过每个文件单独,只有不跟踪它,如果你过滤该类文件。通常我需要注意的是每个目录中的index.php,直到它可以是一致的(有一些例外)。
有没有已经建立的模块来做到这一点?或者这是新的东西?我发现所有的模块都假定它的目录很小(比如看LESS或者其他东西),所以根本没有为这种应用程序构建。
任何想法?我知道这段代码需要被废弃,因为我无法看到停止CPU开销。
这是我开始往下走的路线。它不能看任何其他文件,但通过与一些forEach循环使用fs.readdir我可以过滤只有我想要的文件足够轻松。 –