/** * Add regular workers. Theses are workers that can have multiple instances running * * @param $env */ protected function addWorkers($env) { $phpBinary = PHP_BINARY; $resourceMapper = $this->getContainer()->get('voryx.thruway.resource.mapper'); $mappings = $resourceMapper->getAllMappings(); foreach ($mappings as $workerName => $mapping) { $this->output->writeln("Adding workers: {$workerName}"); $workerAnnotation = $resourceMapper->getWorkerAnnotation($workerName); $numprocs = $workerAnnotation ? $workerAnnotation->getMaxProcesses() : 1; $cmd = "{$phpBinary} {$this->getContainer()->get('kernel')->getRootDir()}/console --env={$env} thruway:worker:start {$workerName} 0"; $command = new Command($workerName, $cmd); $command->setMaxInstances($numprocs); $this->processManager->addCommand($command); } }
/** * @param Command $command * @throws \Exception */ public function addCommand(Command $command) { $this->commands[$command->getName()] = $command; $command->setLoop($this->getLoop()); $command->startProcess(); }