示例#1
0
 /**
  * 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);
 }