创建并写入数据
<?php
$file = __FILE__;
$key = ftok($file, 1);
$size = 4096;
$shmid = shmop_open($key, 'c', 0644, $size);
if($shmid === false){
die('create fail');
}
$data = 'hello world';
$packData = pack('a*', $data); //数据压缩成二进制字符串,null填充
$dataSize = shmop_write($shmid, $packData, 0); //第三个参数代表开始写入数据的位置
if($dataSize === false){
die('write fail');
}
shmop_close($shmid);
exit('success!');
success!
[Done] exited with code=0 in 0.287 seconds
$ ipcs -m
IPC status from <running system> as of Sun Mar 1 00:51:42 CST 2020
T ID KEY MODE OWNER GROUP
Shared Memory:
m 983040 0x31040c43 --rw-r--r-- why staff
另一个进程读取并释放
<?php
$file = __FILE__;
$key = ftok($file, 1);
$size = 4096;
$shmid = shmop_open($key, 'a', 0644, $size);
if($shmid === false){
die('create fail');
}
$data = shmop_read($shmid, 0, $size);
if($data === false){
die('read fail');
}
$res = unpack('a*', $data);
print_r($res[1]);
$res = shmop_delete($shmid);
if($res === false){
die('delete fail');
}
shmop_close($shmid);
hello world
[Done] exited with code=0 in 0.288 seconds
$ ipcs -m
IPC status from <running system> as of Sun Mar 1 00:55:43 CST 2020
T ID KEY MODE OWNER GROUP
Shared Memory: