From f7f3cb97047c9acf426fd5639f9218deb97e4faf Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Thu, 13 Jun 2024 15:52:08 +0200 Subject: [PATCH] Refactored script for better readability The code has been refactored to improve readability and maintainability. The main changes include removing unnecessary condition checks, simplifying the flow of control, and reorganizing the code blocks for better logical grouping. This should make it easier to understand and modify in the future. --- script.php | 197 ++++++++++++++++++++++++++--------------------------- 1 file changed, 97 insertions(+), 100 deletions(-) diff --git a/script.php b/script.php index d92082c..f82022d 100644 --- a/script.php +++ b/script.php @@ -14,118 +14,115 @@ if(file_exists($cacheFile)) { } else { $oldconfig = []; } +foreach ($config as $key => &$metric) { + if (!isset($metric['submetrics'])) { + $metric['submetrics'] = [$metric]; + } + foreach ($metric['submetrics'] as $subkey => &$submetric) { + $pid = pcntl_fork(); + if ($pid > 0) { + $pids[] = $pid; + } else { + if (isset($submetric['command'])) { + $output = null; + $retval = null; + try { + exec($submetric['command'], $output, $retval); + $output = implode("\n", $output); + } catch (Exception $e) { + $output = ''; + } + } elseif (isset($submetric['http'])) { + $client = new GuzzleHttp\Client(); -if(php_sapi_name() == 'cli' || $_SERVER["REQUEST_URI"] == '/metrics') { - foreach ($config as $key => &$metric) { - if (!isset($metric['submetrics'])) { - $metric['submetrics'] = [$metric]; - } - foreach ($metric['submetrics'] as $subkey => &$submetric) { - $pid = pcntl_fork(); - if ($pid > 0) { - $pids[] = $pid; - } else { - if (isset($submetric['command'])) { - $output = null; - $retval = null; - try { - exec($submetric['command'], $output, $retval); - $output = implode("\n", $output); - } catch (Exception $e) { + $options = []; + $output = NULL; + if (isset($submetric['http']['proxy'])) { + $options['proxy'] = $submetric['http']['proxy']; + } + if (isset($submetric['http']['data']) && $submetric['http']['data'] == 'responsetime') { + $options['on_stats'] = function (GuzzleHttp\TransferStats $stats) use (&$output) { + $output = $stats->getTransferTime(); + }; + } + + $hasresponse = NULL; + try { + $res = $client->request('GET', $submetric['http']['url'], $options); + $hasresponse = true; + } catch (GuzzleHttp\Exception\GuzzleException $e) { + if (method_exists($e, 'getResponse')) { + $res = $e->getResponse(); + $hasresponse = true; + } else { + $hasresponse = false; + } + } + + if (isset($submetric['http']['data']) && $submetric['http']['data'] == 'responsebody') { + if ($hasresponse) { + $output = $res->getBody()->getContents(); + } else { $output = ''; } - } elseif (isset($submetric['http'])) { - $client = new GuzzleHttp\Client(); - - $options = []; - $output = NULL; - if (isset($submetric['http']['proxy'])) { - $options['proxy'] = $submetric['http']['proxy']; - } - if (isset($submetric['http']['data']) && $submetric['http']['data'] == 'responsetime') { - $options['on_stats'] = function (GuzzleHttp\TransferStats $stats) use (&$output) { - $output = $stats->getTransferTime(); - }; - } - - $hasresponse = NULL; - try { - $res = $client->request('GET', $submetric['http']['url'], $options); - $hasresponse = true; - } catch (GuzzleHttp\Exception\GuzzleException $e) { - if (method_exists($e, 'getResponse')) { - $res = $e->getResponse(); - $hasresponse = true; - } else { - $hasresponse = false; - } - } - - if (isset($submetric['http']['data']) && $submetric['http']['data'] == 'responsebody') { - if ($hasresponse) { - $output = $res->getBody()->getContents(); - } else { - $output = ''; - } - } elseif ((isset($submetric['http']['statuscode'])) && (isset($submetric['http']['data']) && $submetric['http']['data'] == 'hasresponse')) { - if ($hasresponse) { - $output = $output = (int)in_array($res->getStatusCode(), $submetric['http']['statuscode']);; - } else { - $output = 0; - } - } elseif (isset($submetric['http']['data']) && $submetric['http']['data'] == 'hasresponse') { - $output = (int)$hasresponse; + } elseif ((isset($submetric['http']['statuscode'])) && (isset($submetric['http']['data']) && $submetric['http']['data'] == 'hasresponse')) { + if ($hasresponse) { + $output = $output = (int)in_array($res->getStatusCode(), $submetric['http']['statuscode']);; + } else { + $output = 0; } + } elseif (isset($submetric['http']['data']) && $submetric['http']['data'] == 'hasresponse') { + $output = (int)$hasresponse; } - - if (isset($submetric['jsonelem'])) { - $submetric['value'] = getArrayValue($submetric['jsonelem'], json_decode($output, true)); - } else { - $submetric['value'] = $output; - } - - if (is_bool($submetric['value'])) $submetric['value'] = $submetric['value'] ? 1 : 0; - - file_put_contents('/tmp/.metrics.' . $key . '.' . $subkey, $submetric['value']); - exit(); } - } - } - foreach ($pids as $pid) { - pcntl_waitpid($pid, $none); - } - - foreach ($config as $key => &$metric) { - foreach ($metric['submetrics'] as $subkey => &$submetric) { - $submetric['value'] = file_get_contents('/tmp/.metrics.' . $key . '.' . $subkey); - if (!empty($oldconfig) && !isset($submetric['value']) && (isset($submetric['fallback']) && !empty($submetric['fallback']))) { - if (!isset($submetric['fallback']['maxage']) || 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; - } + if (isset($submetric['jsonelem'])) { + $submetric['value'] = getArrayValue($submetric['jsonelem'], json_decode($output, true)); } else { - $submetric['time'] = time(); + $submetric['value'] = $output; } - unlink('/tmp/.metrics.' . $key . '.' . $subkey); + + if (is_bool($submetric['value'])) $submetric['value'] = $submetric['value'] ? 1 : 0; + + file_put_contents('/tmp/.metrics.' . $key . '.' . $subkey, $submetric['value']); + exit(); } } - - file_put_contents($cacheFile, json_encode($config, JSON_PRETTY_PRINT)); - - $loader = new \Twig\Loader\FilesystemLoader('templates'); - $twig = new \Twig\Environment($loader, [ - 'cache' => 'twig_cache', - ]); - echo $twig->render('metrics.twig', ['config' => $config]); } +foreach ($pids as $pid) { + pcntl_waitpid($pid, $none); +} + + +foreach ($config as $key => &$metric) { + foreach ($metric['submetrics'] as $subkey => &$submetric) { + $submetric['value'] = file_get_contents('/tmp/.metrics.' . $key . '.' . $subkey); + if (!empty($oldconfig) && !isset($submetric['value']) && (isset($submetric['fallback']) && !empty($submetric['fallback']))) { + if (!isset($submetric['fallback']['maxage']) || 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(); + } + unlink('/tmp/.metrics.' . $key . '.' . $subkey); + } +} + +file_put_contents($cacheFile, json_encode($config, JSON_PRETTY_PRINT)); + +$loader = new \Twig\Loader\FilesystemLoader('templates'); +$twig = new \Twig\Environment($loader, [ + 'cache' => 'twig_cache', +]); +echo $twig->render('metrics.twig', ['config' => $config]); function getArrayValue($elem, $array) { $elem = explode('.', $elem);