/** * Run job queue. * * @param string $queue */ public function run($queue) { $configuration = $this->getConfiguration($queue); if (null === $configuration) { return; } try { $job = $this->jobProvider->getFactory($configuration)->create($configuration); $configuration->setOrderNr($configuration->getOrderNr() + 1); $this->saveJobState($configuration, JobState::STATE_RUNNING); $report = $this->reportManager->create($configuration); $state = $job->run($report); if ($state === JobState::STATE_FINISHED) { $configuration->setNextStart(new \DateTime('+' . $configuration->getPeriod() . ' seconds')); $report->setSuccessful(true); } $configuration->addReport($report); $report->setEndedAt(new \DateTime()); $this->saveJobState($configuration, $state); } catch (JobFactoryException $e) { $this->saveJobState($configuration, JobState::STATE_FAILED); } }
/** * @return array */ private function getFactoryNameChoices() { $names = $this->jobProvider->getFactoryNames(); return array_combine($names, $names); }