scheduler = $scheduler; foreach ($this->cronTasks as $task) { /** @var Command $cronTask */ $cronTask = app($task); $signature = $cronTask->getSignature(); if (empty($signature)) { continue; } $this->cronRunners[$signature] = $cronTask; } } /** * Try to figure out which commands are supposed to run right now * * @return array string of tasks that were run */ public function run(): array { $events = $this->scheduler->dueEvents(app()); if (empty($events)) { return []; } $run = []; /** @var \Illuminate\Console\Scheduling\Event $event */ foreach ($events as $event) { foreach ($this->cronRunners as $signature => $task) { if (!str_contains($event->command, $signature)) { continue; } $task->callEvent(); $run[] = $signature; } } return $run; } }