Skip to content

Commit f6b4e3c

Browse files
authored
Merge pull request #2 from ghola/fork-messages
Merge kriswallsmith#40: Fixed shared memory writing and fork losing received messages
2 parents c7e8b2d + 605499e commit f6b4e3c

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

src/Spork/Fork.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class Fork implements DeferredInterface
2626
private $name;
2727
private $status;
2828
private $message;
29+
private $messages = array();
2930

3031
public function __construct($pid, SharedMemory $shm, $debug = false)
3132
{
@@ -92,17 +93,15 @@ public function processWaitStatus($status)
9293

9394
public function receive()
9495
{
95-
$messages = array();
96-
9796
foreach ($this->shm->receive() as $message) {
9897
if ($message instanceof ExitMessage) {
9998
$this->message = $message;
10099
} else {
101-
$messages[] = $message;
100+
$this->messages[] = $message;
102101
}
103102
}
104103

105-
return $messages;
104+
return $this->messages;
106105
}
107106

108107
public function kill($signal = SIGINT)
@@ -135,6 +134,11 @@ public function getError()
135134
}
136135
}
137136

137+
public function getMessages()
138+
{
139+
return $this->messages;
140+
}
141+
138142
public function isSuccessful()
139143
{
140144
return 0 === $this->getExitStatus();

src/Spork/SharedMemory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public function send($message, $signal = null, $pause = 500)
7676
if (($shmId = @shmop_open($this->pid, 'a', 0, 0)) > 0) {
7777
// Read any existing messages in shared memory
7878
$readMessage = shmop_read($shmId, 0, shmop_size($shmId));
79-
$messageArray[] = unserialize($readMessage);
79+
$messageArray = unserialize($readMessage);
8080
shmop_delete($shmId);
8181
shmop_close($shmId);
8282
}

0 commit comments

Comments
 (0)