同时执行多个文件操作? Node.js

时间:2019-12-19 14:12:30

标签: node.js file express save

我正在制作一个node.js Web应用程序。我希望用户能够通过表单提交某些内容,并将数据存储到文本文件中。如果多个人同时提交某事怎么办?一个人会阻止另一个人运行服务器端代码吗?还是同时打开文件会出现问题?

1 个答案:

答案 0 :(得分:0)

nodeJS随附的fs模块包括异步和同步操作。使用同步操作将导致您担心的事情,服务器将在有人处理文件时冻结。这就是为什么您应该使用异步选项的原因。

由于NodeJS在单个进程中运行,因此在有大量活动时使用复杂的同步操作很危险。异步操作将在文件系统在后台执行任务时释放该进程,从而允许其他请求进行处理直到完成。

例如,如果您试图将文件写入文件系统:

同步

fs.writeFileSync('groceries.txt', 'eggs, milk, bread');
// Stuck waiting until file is written
console.log('List Saved!');
console.log('continuing running');

控制台将输出:

List Saved!
continuing running

异步

fs.writeFile('groceries.txt', 'eggs, milk, bread', (err) => {
    if (err) throw err;

    console.log('List saved!');
});

// Can continue running other things in the meantime
console.log('continuing running')

控制台将输出:

continuing running
List Saved!

现在,如果要对同一文件进行写操作,则肯定要使用fs.createWriteStream,它可以让您重复写入文件。通常由记录器之类的东西使用,它需要非常快速地输出到文件中,并且如果同时写入2个东西,则不会引起冲突。

尽管数据库似乎是并发写入的理想选择。