scheduler = $scheduler; } public function run(): void { Logger::info('Starting scheduler'); try { $this->scheduler->start(); } catch (\Throwable $e) { Logger::error('Scheduler error: ' . $e->getMessage()); throw $e; } } public function list(): void { $jobs = $this->scheduler->getJobs(); echo "Scheduled Jobs:\n"; echo "================\n"; foreach ($jobs as $job) { echo sprintf( "Job: %s::%s\nCron: %s\nDescription: %s\nNext run: %s\n\n", $job['class'], $job['method'], $job['cron'], $job['description'], date('Y-m-d H:i:s', $job['next_run']) ); } } public function runJob(string $jobName): void { try { $this->scheduler->runJob($jobName); echo "Job '$jobName' executed successfully\n"; } catch (\Exception $e) { echo "Job execution failed: " . $e->getMessage() . "\n"; } } }