Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Console
/
Scheduling
:
ScheduleWorkCommand-20250317112632.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace Illuminate\Console\Scheduling; use Illuminate\Console\Command; use Illuminate\Support\Carbon; use Illuminate\Support\ProcessUtils; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Process\Process; #[AsCommand(name: 'schedule:work')] class ScheduleWorkCommand extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'schedule:work {--run-output-file= : The file to direct <info>schedule:run</info> output to}'; /** * The console command description. * * @var string */ protected $description = 'Start the schedule worker'; /** * Execute the console command. * * @return void */ public function handle() { $this->components->info( 'Running scheduled tasks every minute.', $this->getLaravel()->isLocal() ? OutputInterface::VERBOSITY_NORMAL : OutputInterface::VERBOSITY_VERBOSE ); [$lastExecutionStartedAt, $executions] = [Carbon::now()->subMinutes(10), []]; $command = implode(' ', array_map(fn ($arg) => ProcessUtils::escapeArgument($arg), [ PHP_BINARY, defined('ARTISAN_BINARY') ? ARTISAN_BINARY : 'artisan', 'schedule:run', ])); if ($this->option('run-output-file')) { $command .= ' >> '.ProcessUtils::escapeArgument($this->option('run-output-file')).' 2>&1'; } while (true) { usleep(100 * 1000); if (Carbon::now()->second === 0 && ! Carbon::now()->startOfMinute()->equalTo($lastExecutionStartedAt)) { $executions[] = $execution = Process::fromShellCommandline($command); $execution->start(); $lastExecutionStartedAt = Carbon::now()->startOfMinute(); } foreach ($executions as $key => $execution) { $output = $execution->getIncrementalOutput(). $execution->getIncrementalErrorOutput(); $this->output->write(ltrim($output, "\n")); if (! $execution->isRunning()) { unset($executions[$key]); } } } } }