複数のユーザーが同時にログインしていて、同じファイルを同時に書き込むことができます。 複数のユーザーがnodejs内の1つのファイルに書き込んでいるときに、ファイルの衝突を防ぐ方法を教えてください。nodejs内の複数のユーザーによって書き込まれる単一ファイル
答えて
シンプルな解決策が1つのノードプロセスしか持たないと仮定すると、fs.writeFileSync
を使用することになります。
適切な方法は、rwlockを使用してファイルを適切にロックし、一度に1つのプロセスしか書き込めないようにすることです。
まあ、fs.writeFileSync
はイベントループをブロックし、ノードイベントキューの残りの非同期関数をブロックします。別のより良いアプローチは、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リクエストをブロックします。これまでに非同期であることを忘れないでください!
私のシステムでは、基本的に、多くのユーザが同時にログインしていて、スクリーン上のものを変更します。これらはウェブソケット経由でサーバに送られます。それらの変更はすべて1つのファイルに保存する必要があります。だから私は(サーバー側で)ユーザーが何を変更しても受け入れる必要があります。 余分なことが必要ですか、下のコードが正常に機能しますか? //サーバ側では、次のようなものがあります。 socket.on( 'newObject'、function(data){ fs.writeFileSync(......); //データがファイルに追加されました。 } – Umer
- 1. 単一のポリリニアストリングを.txtの複数の行に書き込む
- 2. 複数のミドルウェアを単一のjsファイルに書き込む方法
- 3. Python 3 - 複数のAPIクエリを単一のJSONファイルに書き込む
- 4. 複数行のユーザー入力をファイルに書き込む
- 5. ObjectOutputStreamを使用して単一のZipOutputStreamに複数のZipEntryに書き込む
- 6. 一度に複数のファイルに書き込む
- 7. 複数のファイルを読み込んで単一の.csvファイルに書き込む方法C#
- 8. mpiを使って単一のtxtファイルに行列を書き込む
- 9. 複数のExcelファイルの読み込み、平均化、Matlabの単一のExcelファイルへの書き込み
- 10. ディレクトリ内の複数のファイルにデータを書き込む方法
- 11. 複数のファイルに書き込む
- 12. 複数のcsvファイルに書き込む
- 13. フォームにある複数の値を単一のテキストフィールドに書き込む
- 14. 複数のスレッドによるファイル書き込みの動作
- 15. nodejs:forループ内に複数のファイルを書き込む
- 16. csvファイルに書き込むとexcelで間違って書き込まれる
- 17. Ruby:システムプロセスによって書き込まれたファイルからの読み込み
- 18. ファイルの一部を読み込んで単一のunsigned charに書き込む
- 19. 複数のファイルへの書き込み
- 20. リストの内容を単一のcsv列に書き込む
- 21. NodeJS内の複数のモジュールに対する単一のMySQL接続
- 22. Python - 単一の結果ファイルに書き込む際のマルチプロセッシング
- 23. HBaseはクラスタ内の単一ノードに書き込んでいるようです
- 24. 複数の.csvファイルを書き込む
- 25. NodeJSブラウザへの複数回の応答の書き込み
- 26. Nodejsがファイルにjsonを書き込む
- 27. Ada:ファイルに複数回書き込む
- 28. C#で単一の "ファイルに書き込む"
- 29. Pythonでファイルに書き込む単一のライナー
- 30. CellForRowAtIndexを単一ビューで複数のuitableviewに書き込む方法
あなたのユースケースを共有してください。 –
私のシステムでは、多くのユーザーが同時にログインしていて、画面上のものを変更してWebソケット経由でサーバーに送信します。 1つのファイルに保存します。だから私は(サーバー側で)ユーザーが何を変更しても受け入れる必要があります。実際には、これらの変更のそれぞれを1つのファイルに追加する必要があります。しかし、ファイルがすでに書き込まれている可能性があるので、単にファイルに書き込むことはできません。だから私は、どのような要求が最初に来たかに基づいて私のファイルが更新されているキューの並べ替えを見なければならないかもしれません。 – Umer