php windows共享内存,PHP共享内存段实现,使用shmop函数实现内存共享

本文详细介绍了PHP中的内存共享机制,特别是 shmop 函数集的使用,包括 ftok 函数用于生成键,shmop_open 打开内存段,以及 shmop_write、shmop_read 和其他相关函数的用法。文章还讨论了 shmop 在Linux和Windows环境下的差异,并提供了一个简单的 shmop 类封装示例,便于后续开发中复用和扩展。
摘要由CSDN通过智能技术生成

所谓内存共享:就是多个应用程序公用一个内存段,在A程序中可以获取B程序存储在这个内存段的数据,也就是数据共享。

shmop是PHP提供的函数集,在配置PHP的时候使用 -enable-shmop后,就可以使用这个函数集提供的函数,

shmop对LINUX更加友好,而对于WINDOWS来说就不怎样了,不支持CGI和CLI模式~有点尴尬。

来说说他提供的一些函数:

ftok函数:生成一个数字或叫做键或key。$key = ftok(fileName, mode); 一般情况下,这个fileName可以直接使用__FILE__来指向当前文件,mode则比较灵活,是一个字符串类型,比如:"a", "b", "p"

shmop_open($key, $mode, $permission, $size);   开启一个内存段

这里的key就是ftok生成的哪个key,$mode是打开这个内存段的模式。包括:

a:    它允许访问只读的内存段

w:    它允许访问可读写的内存段

c:    创建一个新的内存段,如果已经存在,尝试读写

n:    创建一个新的内存段,如果已经存在,则失败

$size指的是申明的这个内存段的大小,字节为单位、

shmop_open返回一个ID,这个ID是内存段ID,可以ftok生成的key不是一回事。注意!

shmop_write($id, $stringData, $offset);

往id这个内存段中写入字符串数据,从$offset的位置开始,offset一般会设置为0, 注意,这里存储只能是字符串类型。注意转换。

shmop_read($id, $offset, $limit);

读取数据,从$offset开始读取$limit个字符。

shmop_size($id);

获取总共存储了多少个字节。

shmop_delete($id)

清空这个内存段的内容

shmop_close($id)

关闭这个内存端,也叫做内存回收~

好了,介绍了这些基础方法,大家应该都尝试过了,我们应该将这些内容进行一个封装,于是我对它进行了封装,做成了一个类,也方便了以后的扩展

github地址:

composer安装:

composer require toulen/tshmop:1.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值