From 22f0aaf161f270adff600009a07c66bc347ec674 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 16 Aug 2021 14:47:35 +0545 Subject: [PATCH] improvement with latest data --- app/tasks/usage.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/tasks/usage.php b/app/tasks/usage.php index fc8d0478c..e5b8ac509 100644 --- a/app/tasks/usage.php +++ b/app/tasks/usage.php @@ -140,11 +140,13 @@ $cli $cacheAdapter = new Cache(new Redis($redis)); $dbForProject = new Database(new MariaDB($db), $cacheAdapter); + $latestTime = []; + Authorization::disable(); - Console::loop(function () use ($interval, $register, $dbForProject, $globalMetrics, $periods) { - $time = date('d-m-Y H:i:s', time()); - Console::info("[{$time}] Aggregating usage data every {$interval} seconds"); + Console::loop(function () use ($interval, $register, $dbForProject, $globalMetrics, $periods, &$latestTime) { + $now = date('d-m-Y H:i:s', time()); + Console::info("[{$now}] Aggregating usage data every {$interval} seconds"); $loopStart = microtime(true); @@ -155,6 +157,9 @@ $cli foreach ($globalMetrics as $metric => $options) { foreach ($periods as $period) { $start = DateTime::createFromFormat('U', \strtotime($period['startTime']))->format(DateTime::RFC3339); + if(!empty($latestTime[$metric][$period['key']])) { + $start = DateTime::createFromFormat('U', $latestTime[$metric][$period['key']])->format(DateTime::RFC3339); + } $end = DateTime::createFromFormat('U', \strtotime('now'))->format(DateTime::RFC3339); $table = $options['table']; @@ -192,6 +197,7 @@ $cli $dbForProject->updateDocument('stats', $document->getId(), $document->setAttribute('value', $value)); } + $latestTime[$metric][$period['key']] = $time; } catch (\Exception$e) { Console::warning("Failed to save data for project {$projectId} and metric {$metric}"); } @@ -202,7 +208,7 @@ $cli } $loopTook = microtime(true) - $loopStart; - $time = date('d-m-Y H:i:s', time()); - Console::info("[{$time}] Aggregation took {$loopTook} seconds"); + $now = date('d-m-Y H:i:s', time()); + Console::info("[{$now}] Aggregation took {$loopTook} seconds"); }, $interval); });