Only record the same error or query once

PHP 8.2로 올라오면서 동일한 오류가 수백~수천 번 반복되어
디버그 데이터가 너무 많은 메모리를 차지하는 문제가 종종 발생하고 있음.

동일한 위치에서 발생한 동일한 오류나 쿼리는 한 번만 기록하고
count를 증가시키도록 하여, 불필요한 메모리 사용을 줄이고
반복되는 오류나 쿼리를 쉽게 찾을 수 있도록 개선함.
This commit is contained in:
Kijin Sung 2023-04-30 23:56:54 +09:00
parent 968bde2c38
commit a1bd9cc2bc
3 changed files with 97 additions and 19 deletions

View file

@ -98,7 +98,10 @@ $(function() {
backtrace = $('<ul class="debug_backtrace"></ul>').appendTo(entry);
for (j in data.entries[i].backtrace) {
if (data.entries[i].backtrace[j].file) {
backtrace.append($('<li></li>').text(data.entries[i].backtrace[j].file + ":" + data.entries[i].backtrace[j].line));
backtrace.append($('<li></li>').text(
data.entries[i].backtrace[j].file + ":" + data.entries[i].backtrace[j].line +
(j == 0 ? (" (×" + data.entries[i].count + ")") : "")
));
}
}
}
@ -114,7 +117,10 @@ $(function() {
backtrace = $('<ul class="debug_backtrace"></ul>').appendTo(entry);
for (j in data.errors[i].backtrace) {
if (data.errors[i].backtrace[j].file) {
backtrace.append($('<li></li>').text(data.errors[i].backtrace[j].file + ":" + data.errors[i].backtrace[j].line));
backtrace.append($('<li></li>').text(
data.errors[i].backtrace[j].file + ":" + data.errors[i].backtrace[j].line +
(j == 0 ? (" (×" + data.errors[i].count + ")") : "")
));
}
}
}
@ -129,7 +135,10 @@ $(function() {
entry.text(num + ". " + data.queries[i].query_string);
description = $('<ul class="debug_backtrace"></ul>').appendTo(entry);
if (data.queries[i].file && data.queries[i].line) {
description.append($('<li></li>').text("Caller: " + data.queries[i].file + ":" + data.queries[i].line).append("<br>(" + data.queries[i].method + ")"));
description.append($('<li></li>').text("Caller: " +
data.queries[i].file + ":" + data.queries[i].line +
(" (×" + data.queries[i].count + ")")
).append("<br>(" + data.queries[i].method + ")"));
description.append($('<li></li>').text("Connection: " + data.queries[i].query_connection));
description.append($('<li></li>').text("Query ID: " + data.queries[i].query_id));
description.append($('<li></li>').text("Query Time: " + (data.queries[i].query_time ? (data.queries[i].query_time.toFixed(4) + " sec") : "")));