Make status log elapsed time live
This commit is contained in:
@@ -35,7 +35,7 @@ Car는 차량 모뎀/게이트웨이에서 받은 상태를 수집해 DB에 저
|
||||
|
||||
`meta.engine_state_duration`도 같은 기준의 값을 함께 내려주어 내부 확인과 호환성을 유지합니다.
|
||||
|
||||
상태 기록 섹션의 경과는 최신 로그 행을 기준으로 계산합니다. 최신 행은 0초이며, 아래 행은 최신 로그와의 시간 차이를 표시합니다. 각 행의 `age_seconds`는 서버에서 계산해 내려주므로 브라우저 시간차나 수집 주기에 의해 첫 행이 5초부터 시작하는 문제를 줄입니다.
|
||||
상태 기록 섹션의 경과는 각 로그가 기록된 시각부터 현재까지 흐른 시간입니다. 각 행의 `age_seconds`는 서버 현재시각과 로그 timestamp의 차이로 계산해 내려주며, 화면 갱신마다 상단 조회 주기 경과처럼 계속 증가합니다.
|
||||
|
||||
## Monitor 화면 제어
|
||||
|
||||
|
||||
+4
-10
@@ -534,17 +534,11 @@ if (isset($_GET['mode']) && $_GET['mode'] === 'ajax') {
|
||||
$stmtLogs->bindValue(':limit', LOG_LIMIT, PDO::PARAM_INT);
|
||||
$stmtLogs->execute();
|
||||
$logs = $stmtLogs->fetchAll();
|
||||
$logReferenceTs = null;
|
||||
if (!empty($logs[0]['ts'])) {
|
||||
$parsedReferenceTs = strtotime((string)$logs[0]['ts']);
|
||||
if ($parsedReferenceTs !== false) {
|
||||
$logReferenceTs = $parsedReferenceTs;
|
||||
}
|
||||
}
|
||||
$serverNow = time();
|
||||
foreach ($logs as &$logRow) {
|
||||
$rowTs = strtotime((string)($logRow['ts'] ?? ''));
|
||||
$logRow['age_seconds'] = ($logReferenceTs !== null && $rowTs !== false)
|
||||
? max(0, $logReferenceTs - $rowTs)
|
||||
$logRow['age_seconds'] = $rowTs !== false
|
||||
? max(0, $serverNow - $rowTs)
|
||||
: 0;
|
||||
}
|
||||
unset($logRow);
|
||||
@@ -586,7 +580,7 @@ if (isset($_GET['mode']) && $_GET['mode'] === 'ajax') {
|
||||
'stale' => $isStale,
|
||||
'stale_reason' => $staleReason,
|
||||
'latest_tcp' => $latestTcp,
|
||||
'server_time' => time(),
|
||||
'server_time' => $serverNow,
|
||||
'state_duration' => current_engine_state_duration($pdo, $latest),
|
||||
'engine_state_duration' => current_engine_state_duration($pdo, $latest),
|
||||
'poll_interval' => $isFastPollState ? 5 : 10,
|
||||
|
||||
Reference in New Issue
Block a user