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

共享内存中的PHP、PCNTL和队列,php,queue,shared-memory,pcntl,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);

我在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或很短的字符串)?甚至可能吗?

您可以使用
shm\u get\u var()
将其取出来,但这样做没有意义,只需在使用
shm\u put\u var()之前添加它即可,如下所示:

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

您可以使用
shm\u get\u var()
将其返回,但这样做没有任何意义,只需在使用
shm\u put\u var()之前添加它,如下所示:

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

我需要父进程将项目添加到队列的末尾,子进程同时从开始处获取项目:-(然后使用
shm\u get\u var()
,这就是使用共享内存的全部意义:)我需要父进程将项目添加到队列的末尾,子进程同时从开始处获取项目:-(然后使用
shm\u get\u var()
,这就是使用共享内存的全部意义:)