public function getApplication()
 {
     if ($this->_application === null) {
         $app = [];
         foreach ($this->jobs as $name => $job) {
             $job = Yii::createComponent($job);
             if (!$job instanceof JobInterface) {
                 throw new \yii\base\InvalidConfigException('Gearman job must be instance of JobInterface.');
             }
             $job->setName($name);
             for ($i = 0; $i < $job->count; $i++) {
                 $this->_process = null;
                 $application = new Application($name . $i, $this->getConfig(), $this->getProcess($name . $i));
                 $application->add($job);
                 $app[] = $application;
             }
         }
         $this->_application = $app;
     }
     return $this->_application;
 }
 /**
  * @param JobInterface $job
  * @param GearmanJob $gearmanJob
  * @param Application $root
  * @return mixed
  */
 public function executeJob(JobInterface $job, GearmanJob $gearmanJob, Application $root)
 {
     if ($root->getConfig()->getAutoUpdate() && !$root->isAllowingJob) {
         $root->restart();
         return null;
     }
     $root->isAllowingJob = false;
     if (null !== $root->logger) {
         $root->logger->info("Executing job {$job->getName()}");
     }
     return $job->execute($gearmanJob);
 }
 protected function runApplication(Application $app)
 {
     return $app->run((bool) $this->fork);
 }