我正在研究更多的安全儀表板,它監視整個主目錄中包含數百個站點(所有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我可以過濾只有我想要的文件足夠輕鬆。 –