diff --git a/.gitignore b/.gitignore index 6fa5489..2c4705b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ config.php vendor/ -twig_cache/ \ No newline at end of file +twig_cache/ +metrics_cache.json diff --git a/index.php b/index.php index 07e185f..7d8da52 100644 --- a/index.php +++ b/index.php @@ -1,6 +1,11 @@ &$submetric) { + foreach ($metric['submetrics'] as $subkey => &$submetric) { if (isset($submetric['command'])) { $output = null; @@ -70,9 +75,28 @@ if(php_sapi_name() == 'cli' || $_SERVER["REQUEST_URI"] == '/metrics') { } if (is_bool($submetric['value'])) $submetric['value'] = $submetric['value'] ? 1 : 0; + + + if(!empty($oldconfig) && empty($submetric['value']) && (isset($submetric['fallback']) && !empty($submetric['fallback']))) { + if(time() < ($oldconfig[$key]['submetrics'][$subkey]['time'] + $submetric['fallback']['maxage'])) { + if($submetric['fallback']['type'] == 'previous') { + $submetric['value'] = $oldconfig[$key]['submetrics'][$subkey]['value']; + } elseif ($submetric['fallback']['type'] == 'static') { + $submetric['value'] = $submetric['fallback']['value']; + } + $submetric['time'] = $oldconfig[$key]['submetrics'][$subkey]['time']; + } else { + $submetric['value'] = ''; + $submetric['time'] = 0; + } + } else { + $submetric['time'] = time(); + } } } + file_put_contents('metrics_cache.json', json_encode($config, JSON_PRETTY_PRINT)); + $loader = new \Twig\Loader\FilesystemLoader('templates'); $twig = new \Twig\Environment($loader, [ 'cache' => 'twig_cache',