|
|
|
|
@ -40,9 +40,9 @@ class JobWorker extends JobBase { |
|
|
|
|
->setName('background-job:worker') |
|
|
|
|
->setDescription('Run a background job worker') |
|
|
|
|
->addArgument( |
|
|
|
|
'job-class', |
|
|
|
|
'job-classes', |
|
|
|
|
InputArgument::OPTIONAL, |
|
|
|
|
'The class of the job in the database' |
|
|
|
|
'The classes of the jobs to look for in the database, comma-separated' |
|
|
|
|
) |
|
|
|
|
->addOption( |
|
|
|
|
'once', |
|
|
|
|
@ -61,11 +61,31 @@ class JobWorker extends JobBase { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected function execute(InputInterface $input, OutputInterface $output): int { |
|
|
|
|
$jobClass = $input->getArgument('job-class'); |
|
|
|
|
$jobClassesString = $input->getArgument('job-classes'); |
|
|
|
|
// only keep non-empty strings |
|
|
|
|
$jobClasses = $jobClassesString === null |
|
|
|
|
? null |
|
|
|
|
: array_filter( |
|
|
|
|
explode(',', $jobClassesString), |
|
|
|
|
static function (string $jobClass) { |
|
|
|
|
return strlen($jobClass) > 0; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if ($jobClasses !== null) { |
|
|
|
|
// no class |
|
|
|
|
if (count($jobClasses) === 0) { |
|
|
|
|
$output->writeln('<error>Invalid job class list supplied</error>'); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($jobClass && !class_exists($jobClass)) { |
|
|
|
|
$output->writeln('<error>Invalid job class</error>'); |
|
|
|
|
return 1; |
|
|
|
|
// at least one invalid class |
|
|
|
|
foreach ($jobClasses as $jobClass) { |
|
|
|
|
if (!class_exists($jobClass)) { |
|
|
|
|
$output->writeln('<error>Invalid job class: ' . $jobClass . '</error>'); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
while (true) { |
|
|
|
|
@ -80,10 +100,10 @@ class JobWorker extends JobBase { |
|
|
|
|
$this->printSummary($input, $output); |
|
|
|
|
|
|
|
|
|
usleep(50000); |
|
|
|
|
$job = $this->jobList->getNext(false, $jobClass); |
|
|
|
|
$job = $this->jobList->getNext(false, $jobClasses); |
|
|
|
|
if (!$job) { |
|
|
|
|
if ($input->getOption('once') === true) { |
|
|
|
|
$output->writeln('No job of class ' . $jobClass . ' is currently queued', OutputInterface::VERBOSITY_VERBOSE); |
|
|
|
|
$output->writeln('No job of classes ' . $jobClassesString . ' is currently queued', OutputInterface::VERBOSITY_VERBOSE); |
|
|
|
|
$output->writeln('Exiting...', OutputInterface::VERBOSITY_VERBOSE); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|