diff --git a/src/Spork/Fork.php b/src/Spork/Fork.php index a670b3c..4701c7a 100644 --- a/src/Spork/Fork.php +++ b/src/Spork/Fork.php @@ -26,6 +26,7 @@ class Fork implements DeferredInterface private $name; private $status; private $message; + private $messages = array(); public function __construct($pid, SharedMemory $shm, $debug = false) { @@ -92,17 +93,15 @@ public function processWaitStatus($status) public function receive() { - $messages = array(); - foreach ($this->shm->receive() as $message) { if ($message instanceof ExitMessage) { $this->message = $message; } else { - $messages[] = $message; + $this->messages[] = $message; } } - return $messages; + return $this->messages; } public function kill($signal = SIGINT) @@ -135,6 +134,11 @@ public function getError() } } + public function getMessages() + { + return $this->messages; + } + public function isSuccessful() { return 0 === $this->getExitStatus(); diff --git a/src/Spork/SharedMemory.php b/src/Spork/SharedMemory.php index 337960f..1b603eb 100644 --- a/src/Spork/SharedMemory.php +++ b/src/Spork/SharedMemory.php @@ -76,7 +76,7 @@ public function send($message, $signal = null, $pause = 500) if (($shmId = @shmop_open($this->pid, 'a', 0, 0)) > 0) { // Read any existing messages in shared memory $readMessage = shmop_read($shmId, 0, shmop_size($shmId)); - $messageArray[] = unserialize($readMessage); + $messageArray = unserialize($readMessage); shmop_delete($shmId); shmop_close($shmId); }