上一篇文章学习到了php的共享内存,但是仅仅这个是不够的,我们还需要更精确的控制,避免多个进程同时写入共享内存的情况发生,我们还需奥信号量的控制等内容
- 准备
PHP 也提供了类似的内置扩展 sysvsem(这个扩展在 Windows 环境下没有,文档中将 ftok 函数也归到这个扩展中,但实际上 ftok 是在标准函数库中提供的,所以在 Windows 下也是可用的)。
检查扩展是否支持通过phpinfo() 检测加载情况
1 | sysvmsg |
有以上这样的就属于已经正常加载可以使用这些功能啦
- 知识点介绍
- sem_get() 获取信号标识
- sem_acquire() 获取信号量
- sem_release() 信号量发布
- sem_remove() 删除信号量
- shm_attach() 创建或打开共享内存段
- shm_detach() 断开与共享内存段的连接
- 样例
1 | $id_key = ftok(__FILE__, 't'); |
- 测试
最后一定要注意关闭信号量,以免造成上一个信号量一直被占用造成下一个无法使用的问题!!