/** * {@inheritdoc} */ public function wait() { if (!is_null($this->status)) { return false; } $waitStatus = 0; $waitReturn = $this->control->waitProcessId($this->getId(), $waitStatus); if ($waitReturn === $this->getId()) { $this->context->isRunning = false; $this->context->processId = null; } $this->status = new Status($waitStatus); return -1 !== $waitReturn; }
public function testShouldWaitProcessIdAndUpdateStatus() { $actualStatus = null; $expectedStatus = 42; $this->overwrite('pcntl_waitpid', function ($processId, &$status) use($expectedStatus) { $status = $expectedStatus; return -1; }); $control = new Control(); $control->waitProcessId(999, $actualStatus); $this->assertEquals($expectedStatus, $actualStatus); }