mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-04-26 01:10:16 +08:00
perf(安装日志): 优化安装日志处理性能
添加日志缓冲和批量发送机制以减少IPC通信次数 限制前端日志条目数量防止内存泄漏
This commit is contained in:
@@ -561,20 +561,42 @@ async function processNextInQueue() {
|
||||
|
||||
let stdout = "";
|
||||
let stderr = "";
|
||||
let logBuffer = "";
|
||||
let logBufferTimer: NodeJS.Timeout | null = null;
|
||||
const LOG_FLUSH_MS = 100;
|
||||
|
||||
const flushLogBuffer = () => {
|
||||
if (logBuffer.length > 0) {
|
||||
sendLog(logBuffer);
|
||||
logBuffer = "";
|
||||
}
|
||||
logBufferTimer = null;
|
||||
};
|
||||
|
||||
const bufferedSendLog = (message: string) => {
|
||||
logBuffer += message;
|
||||
if (!logBufferTimer) {
|
||||
logBufferTimer = setTimeout(flushLogBuffer, LOG_FLUSH_MS);
|
||||
}
|
||||
};
|
||||
|
||||
child.stdout.on("data", (d) => {
|
||||
const s = d.toString();
|
||||
stdout += s;
|
||||
sendLog(s);
|
||||
bufferedSendLog(s);
|
||||
});
|
||||
|
||||
child.stderr.on("data", (d) => {
|
||||
const s = d.toString();
|
||||
stderr += s;
|
||||
sendLog(s);
|
||||
bufferedSendLog(s);
|
||||
});
|
||||
|
||||
child.on("close", (code) => {
|
||||
if (logBufferTimer) {
|
||||
clearTimeout(logBufferTimer);
|
||||
flushLogBuffer();
|
||||
}
|
||||
if (task.cancelled) {
|
||||
reject(new Error("安装已取消"));
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user