/**
  * @param WorkerConfig[] $workers
  * @param VMConfig[]     $VMConfigs
  *
  * @throws \Exception
  */
 protected function fillStatus($workers, $VMConfigs)
 {
     foreach ($VMConfigs as $host => $VMConfig) {
         $hostWorkers = $this->loadStatus($VMConfig);
         $VMConfig = $VMConfigs[$host];
         foreach ($hostWorkers as $workerData) {
             $search = preg_match('~^([^\\:]+)\\:(.+)_([0-9]{2})$~', $workerData['name'], $match);
             if ($search) {
                 /** @var WorkerConfig $worker */
                 foreach ($workers as $worker) {
                     if ($worker->getName() === $match[2]) {
                         $workerProcess = new WorkerProcess($workerData['name'], $workerData['status'], $workerData['pid'], $workerData['uptime']);
                         $worker->addProcess($workerProcess->setVMConfig($VMConfig))->setMaxWorkerCount(count($worker->getProcess()));
                         break;
                     }
                 }
             }
         }
     }
     foreach ($workers as $worker) {
         if (null === $worker->getProcess()) {
             throw new \Exception(sprintf('Worker %s don\'t have any process', $worker->getName()));
         }
     }
 }
 /**
  * @param WorkerProcess $process
  */
 protected function startProcess(WorkerProcess $process)
 {
     $VMConfig = $process->getVMConfig();
     SupervisorManager::init($VMConfig)->runCommand(sprintf('start %s', $process->getProcessName()));
     $process->setStatus(WorkerProcess::STATUS_RUNNING);
 }