如题:现有一个需求是,在服务器不重启的情况下,更新配置文件内容,并且服务器使用更新后的配置参数。 举个栗子: 模拟一个服务器进程,该服务器进程的任务是循环打印出配置文件message中的message字段,现在突然修改message字段,想让其作用到服务进程中,在不重启的情况下,怎么做到?
17 回复
了解不多,或许你可以试试这个api fs.watchFile(filename[, options], listener) 和 fs.watch(filename[, options][, listener])
不要问太多问题,在控制台直接输入update回车即可
var readable = process.stdin;
readable.on('data', function(chunk) {
var common = (chunk.toString()).substr(0,(chunk.toString()).length-1);
if(common=='update'){
delete require.cache[require.resolve('./message')];
Message = require('./message');
}
});
@MiguelValentine 删除缓存做法应该是最简单的了。我目前使用的是 这种应该是比较low的。
另外想请教下,针对于同一份js文件,多个服务进程调用他,想对这个js更新配置参数,除了每个服务器进程都进行一次update操作外,还有其他好的办法吗?
@jerrywu55 正常情况下的确require多次和一次效果是一样的,但如果delete require.cache[require.resolve(‘./message’)];这样的话就可以将单个模块从缓存中删除。