max('id')); return; } $ids = DB::table('agent_applications')->where('id', '>', (int) $cursor) ->orderBy('id')->limit(self::BATCH)->pluck('id')->map(static fn($id): int => (int) $id)->all(); if (!$ids) return; // 先登记再推进游标;登记失败抛出,下轮重试(最多重复,不会漏)。 $now = now('Asia/Shanghai')->format('Y-m-d H:i:s'); DB::table('admin_realtime_events')->insert(array_map(static fn(int $id): array => [ 'resource' => 'agent_applications', 'resource_id' => (string) $id, 'action' => 'created', 'source' => 'melbet_sport-api', 'created_at' => $now, ], $ids)); Cache::forever(self::CURSOR, max($ids)); } catch (\Throwable $e) { Log::channel('realtime')->error('admin_realtime_agent_application_scan_failed', ['error' => $e->getMessage()]); } } }