1
0
Fork 0
mirror of synced 2024-07-06 07:00:56 +12:00

refactor case

This commit is contained in:
Damodar Lohani 2022-08-13 04:51:52 +00:00
parent d688187e23
commit 3d25ef1be5

View file

@ -114,6 +114,44 @@ $logError = function (Throwable $error, string $action = 'syncUsageStats') use (
Console::warning($error->getTraceAsString()); Console::warning($error->getTraceAsString());
}; };
function aggregateTimeseries(UtopiaDatabase $database, InfluxDatabase $influxDB, callable $logError): void
{
$interval = (int) App::getEnv('_APP_USAGE_TIMESERIES_INTERVAL', '30'); // 30 seconds (by default)
$usage = new TimeSeries($database, $influxDB, $logError);
Console::loop(function () use ($interval, $usage) {
$now = date('d-m-Y H:i:s', time());
Console::info("[{$now}] Aggregating Timeseries Usage data every {$interval} seconds");
$loopStart = microtime(true);
$usage->collect();
$loopTook = microtime(true) - $loopStart;
$now = date('d-m-Y H:i:s', time());
Console::info("[{$now}] Aggregation took {$loopTook} seconds");
}, $interval);
}
function aggregateDatabase(UtopiaDatabase $database, callable $logError): void
{
$interval = (int) App::getEnv('_APP_USAGE_DATABASE_INTERVAL', '900'); // 15 minutes (by default)
$usage = new Database($database, $logError);
$aggregrator = new Aggregator($database, $logError);
Console::loop(function () use ($interval, $usage, $aggregrator) {
$now = date('d-m-Y H:i:s', time());
Console::info("[{$now}] Aggregating database usage every {$interval} seconds.");
$loopStart = microtime(true);
$usage->collect();
$aggregrator->collect();
$loopTook = microtime(true) - $loopStart;
$now = date('d-m-Y H:i:s', time());
Console::info("[{$now}] Aggregation took {$loopTook} seconds");
}, $interval);
}
$cli $cli
->task('usage') ->task('usage')
->param('type', 'timeseries', new WhiteList(['timeseries', 'database'])) ->param('type', 'timeseries', new WhiteList(['timeseries', 'database']))
@ -125,38 +163,14 @@ $cli
$database = getDatabase($register, '_console'); $database = getDatabase($register, '_console');
$influxDB = getInfluxDB($register); $influxDB = getInfluxDB($register);
if ($type == 'timeseries') { switch($type) {
$interval = (int) App::getEnv('_APP_USAGE_TIMESERIES_INTERVAL', '30'); // 30 seconds (by default) case 'timeseries':
$usage = new TimeSeries($database, $influxDB, $logError); aggregateTimeseries($database, $influxDB, $logError);
break;
Console::loop(function () use ($interval, $usage) { case 'database':
$now = date('d-m-Y H:i:s', time()); aggregateDatabase($database, $logError);
Console::info("[{$now}] Aggregating Timeseries Usage data every {$interval} seconds"); break;
$loopStart = microtime(true); default:
Console::error("Unsupported usage aggregation type");
$usage->collect();
$loopTook = microtime(true) - $loopStart;
$now = date('d-m-Y H:i:s', time());
Console::info("[{$now}] Aggregation took {$loopTook} seconds");
}, $interval);
}
if ($type == 'database') {
$interval = (int) App::getEnv('_APP_USAGE_DATABASE_INTERVAL', '900'); // 15 minutes (by default)
$usage = new Database($database, $logError);
$aggregrator = new Aggregator($database, $logError);
Console::loop(function () use ($interval, $usage, $aggregrator) {
$now = date('d-m-Y H:i:s', time());
Console::info("[{$now}] Aggregating database usage every {$interval} seconds.");
$loopStart = microtime(true);
$usage->collect();
$aggregrator->collect();
$loopTook = microtime(true) - $loopStart;
$now = date('d-m-Y H:i:s', time());
Console::info("[{$now}] Aggregation took {$loopTook} seconds");
}, $interval);
} }
}); });