Javascript 节点:写入文件,保持一定的长度(createWriteStream?)
我需要一些帮助 我有一个UDP服务器,它不断收到大量消息 我想写我要进入文件的最后50000条消息(或某个KB) 因此,前50000条消息只是被附加到一个文件中 第50001条消息删除文件的第一行,并将消息附加到文件的底部 现在,它只是附加到文件中。。但是文件太大了,我只想删除所有的开始行,直到剩下大约50000行。有什么办法吗?此文件将以每秒150多次的速度写入Javascript 节点:写入文件,保持一定的长度(createWriteStream?),javascript,node.js,express,fs,Javascript,Node.js,Express,Fs,我需要一些帮助 我有一个UDP服务器,它不断收到大量消息 我想写我要进入文件的最后50000条消息(或某个KB) 因此,前50000条消息只是被附加到一个文件中 第50001条消息删除文件的第一行,并将消息附加到文件的底部 现在,它只是附加到文件中。。但是文件太大了,我只想删除所有的开始行,直到剩下大约50000行。有什么办法吗?此文件将以每秒150多次的速度写入 udpserver.on("message", function (msg, rinfo){
udpserver.on("message",
function (msg, rinfo){
fs.appendFile("../Logs/Raw-UDP-Log.log", msg.toString()+"\n", function (err) {
console.log("Writing to log error: ", err);
});
});
如果每秒写入150行,并且保存最后500行,则只保存最后3~4秒的活动。这有意义吗?如果将这些消息保存在内存中的数组中,根据
行[idx++%lines.length]=…
将其写入,然后出错时将其转储到文件中,甚至在没有问题时不处理文件,这难道不是更有意义吗?是的,也许我应该增加这个数字。。。可能当文件达到50000行时,您可能需要一个内存映射文件。这个模块在这里应该很有用。@Mike'Pomax'Kamermans噢!是的,这是个好主意,我没想到!我正在看,看看我是否能想出一个办法,让它工作,一个已经停止。