单个文件,由nodejs中的多个用户编写

时间:2016-04-05 22:16:40

标签: node.js

我有多个用户同时登录,他们可以同时写同一个文件。 当多个用户在nodejs中的单个文件上写入时,如何防止文件发生冲突。

2 个答案:

答案 0 :(得分:0)

假设您只有一个节点进程,那么简单解决方案就是使用fs.writeFileSync

正确的方法是使用rwlock来正确锁定文件,这样一次只能有一个进程写入文件。

答案 1 :(得分:0)

好吧,fs.writeFileSync将阻止事件循环,并将阻止Node事件队列中的其余异步函数。另一种更好的方法是使用像semaphore这样的模块。

var sem = require('semaphore')(1);
var server = require('http').createServer(req, res) {
    res.write("Start your file write sir");

    sem.take(function() {
        // Process your write to file using fs.writeFile
        // And finish the request
        res.end("Bye bye, your file write is done.");
        sem.leave();
    });
});

它会阻止任何其他HTTP请求,而不会阻塞整个事件循环,不要忘记是异步的!