From 4bcb891f24d07840c613f9e483666c1ff984ea9a Mon Sep 17 00:00:00 2001 From: ste87 Date: Sat, 14 Mar 2026 23:15:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20Speed/ServerUsagesSyncServ?= =?UTF-8?q?ice.php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Speed/ServerUsagesSyncService.php | 49 +++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Speed/ServerUsagesSyncService.php diff --git a/Speed/ServerUsagesSyncService.php b/Speed/ServerUsagesSyncService.php new file mode 100644 index 0000000..188291f --- /dev/null +++ b/Speed/ServerUsagesSyncService.php @@ -0,0 +1,49 @@ +servers; + + $servers->each(function (Server $server) { + try { + $metrics = $this->repository->setServer($server)->getMetrics(MetricTimeframe::HOUR); + + $bandwidth = $server->bandwidth_usage; + $endingDate = $server->hydrated_at ? Carbon::parse($server->hydrated_at) : Carbon::now()->firstOfMonth(); + + foreach ($metrics as $metric) { + if (Carbon::createFromTimestamp($metric['time'])->gt($endingDate)) { + // we multiply it by 60 seconds because each metric is + // recorded every 1 minute but the values like netin and + // netout are in bytes/sec + $bandwidth += (int) $metric['netin'] * 60 + (int) $metric['netout'] * 60; + } + } + + if ($bandwidth > 0) { + $server->update([ + 'bandwidth_usage' => $bandwidth, + 'hydrated_at' => now(), + ]); + } + } catch (ProxmoxConnectionException $e) { + // do nothing + } + }); + } +}