diff --git a/hwe/a_traffic.php b/hwe/a_traffic.php index 4038c8fe..483e061e 100644 --- a/hwe/a_traffic.php +++ b/hwe/a_traffic.php @@ -12,34 +12,19 @@ $gameStor = KVStorage::getStorage($db, 'game_env'); increaseRefresh("갱신정보", 1); -$admin = $gameStor->getValues(['year', 'month', 'refresh', 'maxrefresh', 'maxonline']); +$admin = $gameStor->getValues(['year', 'month', 'refresh', 'maxrefresh', 'maxonline', 'recentTraffic']); -$log = getRawFileLogRecent(__DIR__ . '/logs/' . UniqueConst::$serverID . '/_traffic.txt', 11, 100); - -$date = []; -$year = []; -$month = []; -$refresh = []; -$online = []; +$recentTraffic = $admin['recentTraffic'] ?? []; $curonline = getOnlineNum(); -foreach ($log as $i => $value) { - $parse = Json::decode($value); - if (is_array($parse) === false) { - continue; - } - if (count($parse) < 5) { - continue; - } - $date[$i] = $parse[0]; - $year[$i] = $parse[1]; - $month[$i] = $parse[2]; - $refresh[$i] = $parse[3]; - $online[$i] = $parse[4]; -} -$year[] = $admin['year']; -$month[] = $admin['month']; -$date[] = TimeUtil::now(); + +$recentTraffic[] = [ + 'year' => $admin['year'], + 'month' => $admin['month'], + 'refresh' => $admin['refresh'], + 'online' => $curonline, + 'date' => TimeUtil::now() +]; if ($admin['maxrefresh'] == 0) { $admin['maxrefresh'] = 1; @@ -113,13 +98,13 @@ if ($admin['maxonline'] < $curonline) { $value) { + foreach ($recentTraffic as $trafficItem) { + $value = $trafficItem['refresh']; $w = round($value / $admin['maxrefresh'] * 100, 1); $color = getTrafficColor($w); - $dt = substr($date[$i], 11, 5); ?> + $dt = substr($trafficItem['date'], 11, 5); ?> - 월 + @@ -154,13 +139,13 @@ if ($admin['maxonline'] < $curonline) { $value) { + foreach ($recentTraffic as $trafficItem) { + $value = $trafficItem['online']; $w = round($value / $admin['maxonline'] * 100, 1); $color = getTrafficColor($w); - $dt = substr($date[$i], 11, 5); ?> + $dt = substr($trafficItem['date'], 11, 5); ?> - 월 + diff --git a/hwe/func.php b/hwe/func.php index e8b198e9..ad3792d9 100644 --- a/hwe/func.php +++ b/hwe/func.php @@ -1070,7 +1070,7 @@ function updateTraffic() $online = getOnlineNum(); $db = DB::db(); $gameStor = KVStorage::getStorage($db, 'game_env'); - $admin = $gameStor->getValues(['year', 'month', 'refresh', 'maxonline', 'maxrefresh']); + $admin = $gameStor->getValues(['year', 'month', 'refresh', 'maxonline', 'maxrefresh', 'recentTraffic']); /** @var array{year:int,month:int,refresh:int,maxonline:int,maxrefresh:int} $admin */ if ($admin['maxrefresh'] < $admin['refresh']) { @@ -1083,6 +1083,19 @@ function updateTraffic() $gameStor->maxrefresh = $admin['maxrefresh']; $gameStor->maxonline = $admin['maxonline']; + $recentTraffic = $admin['recentTraffic'] ?? []; + if(count($recentTraffic) >= 5){ + array_shift($recentTraffic); + } + $recentTraffic[] = [ + 'year'=>$admin['year'], + 'month' => $admin['month'], + 'refresh' => $admin['refresh'], + 'online' => $admin['maxonline'], + 'date' => TimeUtil::now(), + ]; + $gameStor->recentTraffic = $recentTraffic; + $db->update('general_access_log', ['refresh' => 0], true); }