设为首页 收藏本站
查看: 568|回复: 0

[经验分享] PHP共享内存段实现,使用shmop函数实现内存共享

[复制链接]

尚未签到

发表于 2018-12-13 09:26:27 | 显示全部楼层 |阅读模式
  所谓内存共享:就是多个应用程序公用一个内存段,在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地址:
  https://github.com/toulen/Tshmop
  

  composer安装:
  composer require toulen/tshmop:1.0




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-650778-1-1.html 上篇帖子: 阿里云服务器安装php+nginx+mysql环境 下篇帖子: 添加php模块 imagick
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表