同时操作多个文件? Node.js
Multiple file operations at the same time? Node.js
我正在制作一个 node.js 网络应用程序。我希望用户能够通过表单提交内容,我将数据存储到文本文件中。如果多个人同时提交东西怎么办?一个人会阻止另一个人 运行 服务器端代码吗?或者同时打开文件会不会有问题?
nodeJS 中包含的 fs
模块包括异步和同步操作。使用同步操作会导致您担心的结果,服务器会在有人处理文件时冻结。这就是您应该使用异步选项的原因。
由于NodeJS运行在单进程中,当activity大量使用时,使用复杂的同步操作是危险的。异步操作将释放进程,而文件系统在后台执行它的工作,允许处理其他请求直到完成。
例如,如果您尝试将文件写入文件系统:
同步
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
,这样您就可以重复写入文件。这通常被logger之类的东西使用,它需要非常快速地输出到文件,并且如果同时写入2个东西不会造成冲突。
尽管数据库似乎是并发写入的理想选择。
我正在制作一个 node.js 网络应用程序。我希望用户能够通过表单提交内容,我将数据存储到文本文件中。如果多个人同时提交东西怎么办?一个人会阻止另一个人 运行 服务器端代码吗?或者同时打开文件会不会有问题?
nodeJS 中包含的 fs
模块包括异步和同步操作。使用同步操作会导致您担心的结果,服务器会在有人处理文件时冻结。这就是您应该使用异步选项的原因。
由于NodeJS运行在单进程中,当activity大量使用时,使用复杂的同步操作是危险的。异步操作将释放进程,而文件系统在后台执行它的工作,允许处理其他请求直到完成。
例如,如果您尝试将文件写入文件系统:
同步
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
,这样您就可以重复写入文件。这通常被logger之类的东西使用,它需要非常快速地输出到文件,并且如果同时写入2个东西不会造成冲突。
尽管数据库似乎是并发写入的理想选择。