1

我在 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 或非常短的字符串)添加到队列中?甚至可能吗?

4

1 回答 1

1

好吧,您可以使用 将其取回shm_get_var(),但是这样做没有意义,只需在使用之前添加它,shm_put_var()如下所示:

$addrQueue = new AddressQueue();
$addrQueue->add('whatever');
shm_put_var($sharedSegment, QUEUE_INDEX, $addrQueue);
于 2012-09-27T13:38:58.960 回答