diffInMinutes($last_run) < 1) { // return; // } // } // Module::whereNotNull('url')->chunk(100, function ($modules) { $servers = []; foreach ($modules as $module) { try { $response = $module->http()->get('remote'); } catch (\Exception $e) { Log::error($e->getMessage()); continue; } if ($response->successful()) { // 如果模块状态不为 up,则更新为 up if ($module->status !== 'up') { $module->status = 'up'; } $json = $response->json(); if (isset($json['servers']) && is_array($json['servers'])) { // 只保留 name, status, meta $servers = array_merge($servers, array_map(function ($server) use ($module) { return [ 'name' => $server['name'], 'status' => $server['status'], 'meta' => $server['meta'] ?? [], 'created_at' => $server['created_at'] ?? now(), 'updated_at' => $server['updated_at'] ?? now(), 'module' => [ 'id' => $module->id, 'name' => $module->name, ] ]; }, $json['servers'])); broadcast(new ServerEvent($servers)); } } else { // if module return maintenance, then set module status to maintenance if ($response->status() == 503) { $module->status = 'maintenance'; } else { $module->status = 'down'; } } $module->save(); } // if local if (config('app.env') === 'local') { Cache::forever('servers', $servers); } else { Cache::put('servers', $servers, now()->addMinutes(10)); } // 缓存运行完成的时间 // Cache::put('servers_updated_at', now(), now()->addMinutes(10)); }); } }