public function run(JobName $jobName, JobSettings $settings, UuidInterface $previousEventId = null) { $jobWorker = $this->jobWorkerRepository->get($jobName); $this->processManager->onTermination([$jobWorker, 'stop']); $work = $jobWorker->start($this->eventProcessor, $settings, $previousEventId); foreach ($work as $event) { $this->jobWorkerRepository->save($jobWorker); $this->processManager->dispatchSignals(); } $this->jobWorkerRepository->save($jobWorker); }
/** * @param Job[] $jobs */ private function doManage(array $jobs) { $this->pid = $this->processManager->getMyPid(); $this->processManager->onTermination(function () { $this->terminate = true; }); while (!$this->terminate) { $this->maintain($jobs); if ($this->isChildProcess()) { return; } } $this->terminate($jobs); }