工作进程运行主进程代码



当我更改test.js时,console.log("Source code change, start to restart worker one by one")运行3次?我有一个主进程,所以应该是一次

var cluster = require('cluster');
var fs      = require('fs');
if (cluster.isMaster) {
    for (var i = 0; i < 2; i++) {
        cluster.fork();
    }
    fs.watch('./config/test.js', function(curr, prev) {
        console.log("Source code change, start to restart worker one by one");
        delete require.cache[require.resolve('./config/config.js')];
    })
}else{
    var config = require('./config/test.js')
}

您的看门狗(fs.watch)被触发了三次,可能是因为您写了三个数据块?也许当文件变大时,它会更频繁地触发?(也许WinSCP会在写入前截断文件?)

我假设您希望仅在文件完全上传时触发?

不幸的是,您无法从inotify(..)捕获IN_CLOSE_WRITE消息。

所以在你的fs.watch里面做一些类似var old = to; to = setTimeout(function() { clearTimeout(old); /* insert real stuff here */ }, 1000)的事情。如果文件在1000毫秒内不断更改,则该函数只会触发一次…

最新更新