$hosts Hostnamen der Website * @param array $known schon bekannte Kennungen je Hostname (null: dort nicht überwacht) * @return array{fetched_at: int, domains: list>, redirects: array} */ public function run(array $hosts, ?string $base, int $now, array $known = []): array { $missing = array_values(array_filter($hosts, static fn (string $host) => ! array_key_exists($host, $known))); $ids = []; foreach ($hosts as $host) { if (isset($known[$host])) { $ids[$host] = $known[$host]; } } foreach ($missing === [] ? [] : $this->api->findDomains($missing) as $host => $domain) { $ids[$host] = $domain['id']; } $overviews = []; foreach (array_unique(array_values($ids)) as $id) { $overview = $this->api->hosting($id); if ($overview !== null) { $overviews[$id] = $overview; } } return SiteHosting::snapshot($ids, $overviews, $base, $now); } }