php中进程间通信介绍的很少,今天我来学习学习怎么实现共享内存的实现
- 安装
需要在安装的时候添加 –enable-shmop 来启用该函数的功能
可以通过 ** phpinfo(); ** 来确认是否安装成功,我这里查看 ** shmop support => enabled ** 代表启用成功了
- 主要函数
1 | shmop_close — 关闭共享内存块 |
与此相关的还有一个很重要的函数:ftok,通过文件的 inode 信息(nix 上通过 stat 或 ls -i 命令查看)创建 IPC 的唯一 key(文件/文件夹的 inode 是唯一的)。这个函数在 Linux 上也是直接调用同名的系统函数实现,Windows 上还是使用一些封装。
有个需要稍微注意的点:shmop_open 的第二个参数是个 flag,类似 fopen 的第二个参数,其取值有以前几个:
1 | “a” 只读访问 |
- 程序
1 | //新建一块共享内存(并取得唯一nodeID) |
- 运行效果图
即使进程关闭重新开启依然能够正常读取数据!
一定要把握长度,否则可能出现读取异常的问题