我正在制作一个node.js Web应用程序。我希望用户能够通过表单提交某些内容,并将数据存储到文本文件中。如果多个人同时提交某事怎么办?一个人会阻止另一个人运行服务器端代码吗?还是同时打开文件会出现问题?
答案 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个东西,则不会引起冲突。
尽管数据库似乎是并发写入的理想选择。