Пример #1
0
 /**
  * @throws ProcessExitHandlerException
  */
 public function check()
 {
     $pid = $this->getProcessControl()->wait($status, WNOHANG);
     if (0 === $pid) {
         return;
     } elseif (-1 === $pid) {
         if (10 !== $this->getProcessControl()->getLastError()) {
             throw new ProcessExitHandlerException('pcntl_wait: ' . $this->getProcessControl()->getStringError($this->getProcessControl()->getLastError()));
         }
     }
     $processExit = new ProcessExit($pid, $status);
     foreach ($this->getHandlers() as $handler) {
         if ($processExit->isPropagationStopped()) {
             break;
         }
         call_user_func($handler, $processExit);
     }
 }
Пример #2
0
 /**
  * @inheritDoc
  */
 public function onProcessExit(ProcessExit $processExit)
 {
     $pid = $processExit->getPid();
     if (false === $this->hasSubTask($pid)) {
         return;
     }
     $this->removeSubTask($pid);
     $processExit->stopPropagation();
 }
Пример #3
0
 /**
  * @param int $pid
  * @param int $status
  *
  * @return ProcessExit
  */
 public function getProcessExit($pid, $status)
 {
     $processExit = new ProcessExit($pid, $status);
     $processExit->setProcessControl($this->processControl);
     return $processExit;
 }