PHP,PCNTL和共享内存中的队列

时间:2012-09-27 13:37:08

标签: php queue shared-memory pcntl

我在php中实现共享内存时遇到了麻烦。是否可以在共享内存中进行队列?

代码在这里:

// queue class
class AddressQueue extends \Nette\Object {

private $queue = array();

public function add($var) {
    $this->queue[] = $var;
}

public function get() {
    return array_shift($this->queue);
}

public function num() {
    return count($this->queue);
}
}

$segmentKey = "987654";
$permissions = 0666;
$size = 8092;
$sharedSegment = shm_attach($segmentKey, $size, $permissions);

shm_put_var($sharedSegment, QUEUE_INDEX, new AddressQueue());

...此时,如何将一个项目(int或非常短的字符串)添加到队列中?它甚至可能吗?

1 个答案:

答案 0 :(得分:1)

好吧,你会使用shm_get_var()将其恢复原状,但这样做是没有意义的,只需在使用shm_put_var()之前添加它:

$addrQueue = new AddressQueue();
$addrQueue->add('whatever');
shm_put_var($sharedSegment, QUEUE_INDEX, $addrQueue);