0

私は、各リクエストとパラメーターがcsvファイルに記録されるシステムで作業しました。

ファイルへの書き込み中にlock、同期に を使用していました。

node.js で同期はどのように機能しますか?

要求をファイルに記録したい場合、たとえば時間ベースの csv ファイルをロックする必要がありますか?

4

1 に答える 1

4

では、node.js のソース コードを読んでみました。のようなものを使用するとfs.appendFile、最終的にここに着陸します (C++ の場合):

  if (cb->IsFunction()) {
    ASYNC_CALL(write, cb, fd, buf, len, pos)
    return;
  }

https://github.com/joyent/node/blob/master/src/node_file.cc#L681

writeは昔ながらの POSIC 書き込みであり、( とは対照的に) アトミックであることが保証されていませpwriteん。appendFileひどいことは何も起こりませんが、前の通話が完了する前に再度電話をかけると、回線が混乱する可能性があります。

順次 POSIX 書き込みを行うを使用する必要がfs.createWriteStreamあります (データがまだ書き込まれていない内部バッファーを保持します)。これにより、データがストリームに書き込んだ順序で正確に書き込まれることが保証されます。

于 2013-09-24T10:18:52.140 に答える