#!/usr/bin/env php collectMetrics(); echo " Server: CPU={$serverMetrics['cpu_percent']}% RAM={$serverMetrics['ram_used_mb']}/{$serverMetrics['ram_total_mb']}MB "; echo "Disk={$serverMetrics['disk_used_gb']}/{$serverMetrics['disk_total_gb']}GB "; echo "Net RX={$serverMetrics['network_rx_mbps']}Mbps TX={$serverMetrics['network_tx_mbps']}Mbps\n"; // Collect client metrics $clientMetrics = $monitoring->collectClientMetrics(); if (!empty($clientMetrics)) { foreach ($clientMetrics as $cm) { echo " Client #{$cm['client_id']} ({$cm['client_name']}): UP={$cm['speed_up_kbps']}Kbps DOWN={$cm['speed_down_kbps']}Kbps\n"; } } else { echo " No active clients\n"; } } catch (Exception $e) { echo " ERROR: " . $e->getMessage() . "\n"; } } // Clean old metrics ServerMonitoring::cleanOldMetrics(); // Calculate sleep time $executionTime = microtime(true) - $startTime; $sleepTime = max(0, 30 - $executionTime); echo "[" . date('Y-m-d H:i:s') . "] Collection completed in " . round($executionTime, 2) . "s, sleeping for " . round($sleepTime, 2) . "s\n\n"; if ($sleepTime > 0) { sleep((int)$sleepTime); } } catch (Exception $e) { echo "[" . date('Y-m-d H:i:s') . "] FATAL ERROR: " . $e->getMessage() . "\n"; error_log("[FATAL] Metrics collector error: " . $e->getMessage()); echo "Retrying in 30 seconds...\n\n"; sleep(30); } catch (Error $e) { echo "[" . date('Y-m-d H:i:s') . "] CRITICAL ERROR: " . $e->getMessage() . "\n"; error_log("[CRITICAL] Metrics collector error: " . $e->getMessage()); echo "Retrying in 30 seconds...\n\n"; sleep(30); } }