共享内存中的PHP、PCNTL和队列
我在php中实现共享内存时遇到问题。可以在共享内存中创建队列吗 代码如下:共享内存中的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);
// 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()
,这就是使用共享内存的全部意义:)