123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?php
-
- namespace Illuminate\Console\Scheduling;
-
- use Illuminate\Support\Carbon;
- use Illuminate\Console\Command;
-
- class ScheduleRunCommand extends Command
- {
- /**
- * The console command name.
- *
- * @var string
- */
- protected $name = 'schedule:run';
-
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = 'Run the scheduled commands';
-
- /**
- * The schedule instance.
- *
- * @var \Illuminate\Console\Scheduling\Schedule
- */
- protected $schedule;
-
- /**
- * The 24 hour timestamp this scheduler command started running.
- *
- * @var \Illuminate\Support\Carbon;
- */
- protected $startedAt;
-
- /**
- * Check if any events ran.
- *
- * @var bool
- */
- protected $eventsRan = false;
-
- /**
- * Create a new command instance.
- *
- * @param \Illuminate\Console\Scheduling\Schedule $schedule
- * @return void
- */
- public function __construct(Schedule $schedule)
- {
- $this->schedule = $schedule;
-
- $this->startedAt = Carbon::now();
-
- parent::__construct();
- }
-
- /**
- * Execute the console command.
- *
- * @return void
- */
- public function handle()
- {
- foreach ($this->schedule->dueEvents($this->laravel) as $event) {
- if (! $event->filtersPass($this->laravel)) {
- continue;
- }
-
- if ($event->onOneServer) {
- $this->runSingleServerEvent($event);
- } else {
- $this->runEvent($event);
- }
-
- $this->eventsRan = true;
- }
-
- if (! $this->eventsRan) {
- $this->info('No scheduled commands are ready to run.');
- }
- }
-
- /**
- * Run the given single server event.
- *
- * @param \Illuminate\Console\Scheduling\Event $event
- * @return void
- */
- protected function runSingleServerEvent($event)
- {
- if ($this->schedule->serverShouldRun($event, $this->startedAt)) {
- $this->runEvent($event);
- } else {
- $this->line('<info>Skipping command (has already run on another server):</info> '.$event->getSummaryForDisplay());
- }
- }
-
- /**
- * Run the given event.
- *
- * @param \Illuminate\Console\Scheduling\Event $event
- * @return void
- */
- protected function runEvent($event)
- {
- $this->line('<info>Running scheduled command:</info> '.$event->getSummaryForDisplay());
-
- $event->run($this->laravel);
-
- $this->eventsRan = true;
- }
- }
|