第一次接触这个高级函数shmop,直接上代码应该就能看明白了
int
shmop_open
( int
$key
, string
$flags
, int
$mode
, int
$size
)
第一个参数传入共享的内存块id,使用10进制或16进制
第二个参数传入读写标记
'a'以只读的形式打开一个已有的共享内存碎片
'c'以读写的形式创建,已存在相同key的内存块则直接读写打开
'w'读写,大多数情景下使用
'n'创建一个新的共享内存块,如果有相同key则创建失败,主要用于安全创建
第三个参数类似于对该内存块设置权限属性
第四个参数标识希望创建的内存块大小
int
shmop_write
( int
$shmid
, string
$data
, int
$offset
)
第三个参数用于标记写的偏移坐标
string
shmop_read
( int
$shmid
, int
$start
, int
$count
)
第二个参数为读取的偏移坐标
第三个参数为读取的内存大小
其他基本都好理解,一般在close之前记得delete一下
创建时可以使用$shm_key = ftok(__FILE__, 't');
来获取内存块key,建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值,这个值通常使用ftok获取