我在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或非常短的字符串)添加到队列中?它甚至可能吗?
答案 0 :(得分:1)
好吧,你会使用shm_get_var()
将其恢复原状,但这样做是没有意义的,只需在使用shm_put_var()
之前添加它:
$addrQueue = new AddressQueue();
$addrQueue->add('whatever');
shm_put_var($sharedSegment, QUEUE_INDEX, $addrQueue);