argument('ruleId'); $query = CrawlRule::query()->where('enabled', true); if ($ruleId !== null) { $query->whereKey((int) $ruleId); } $rules = $query->orderBy('id')->get(); if ($rules->isEmpty()) { $this->warn('没有可执行的采集规则'); return self::SUCCESS; } $shouldRunAll = (bool) $this->option('all') || $ruleId !== null; $sync = (bool) $this->option('sync'); $dispatched = 0; foreach ($rules as $rule) { if (! $shouldRunAll && ! $scheduleService->isDue($rule)) { continue; } if ($sync) { RunCrawlRuleJob::dispatchSync($rule->id, CrawlTriggerType::Schedule->value); } else { RunCrawlRuleJob::dispatch($rule->id, CrawlTriggerType::Schedule->value); } $dispatched++; $this->info(sprintf('已提交规则 #%d %s', $rule->id, $rule->name)); } if ($dispatched === 0) { $this->line('当前无到期规则'); } return self::SUCCESS; } }