diff options
Diffstat (limited to 'lib/BackgroundJobs/ComputeStatistics.php')
-rw-r--r-- | lib/BackgroundJobs/ComputeStatistics.php | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/lib/BackgroundJobs/ComputeStatistics.php b/lib/BackgroundJobs/ComputeStatistics.php index 3fe94f5..e328ca2 100644 --- a/lib/BackgroundJobs/ComputeStatistics.php +++ b/lib/BackgroundJobs/ComputeStatistics.php @@ -50,16 +50,39 @@ class ComputeStatistics extends TimedJob { $this->connection = $connection ? $connection : \OC::$server->getDatabaseConnection(); $this->config = $config = $config ? $config : \OC::$server->getConfig(); $this->evaluateStatistics = $evaluateStatistics ? $evaluateStatistics : new EvaluateStatistics(); - $this->setInterval(24 * 60 * 60); + $this->setInterval(60 * 60); } protected function run($argument) { - $result = []; - $result['instances'] = $this->getNumberOfInstances(); - $result['categories'] = $this->getStatisticsOfCategories(); - $result['apps'] = $this->getApps(); - $this->config->setAppValue('survey_server', 'evaluated_statistics', json_encode($result)); + $lastResult = $this->config->getAppValue('survey_server', 'evaluated_statistics', []); + $newResult = json_decode($lastResult, true); + + if (!isset($newResult['lastRun'])) { + $newResult['lastRun'] = []; + } + + $lastRun = []; + $lastRun['categories'] = isset($newResult['lastRun']['categories']) ? (int)$newResult['lastRun']['categories'] : 0; + $lastRun['apps'] = isset($newResult['lastRun']['apps']) ? (int)$newResult['lastRun']['apps'] : 0; + + $selected = array_keys($lastRun, min($lastRun)); + + // this is fast, so let's run this always + $newResult['instances'] = $this->getNumberOfInstances(); + + switch ($selected[0]) { + case 'categories': + $newResult['categories'] = $this->getStatisticsOfCategories(); + $newResult['lastRun']['categories'] = time(); + break; + case 'apps': + $newResult['apps'] = $this->getApps(); + $newResult['lastRun']['apps'] = time(); + break; + } + + $this->config->setAppValue('survey_server', 'evaluated_statistics', json_encode($newResult)); } /** |