• php 共享内存学习(shmop函数)


    问题:希望可以在进程间共享变量,为共享数据提供快速访问

    解决方案:除了可以使用APC模块,还可以用shmop或System V共享内存

    1 //创建键
    2 //将一个可访问的文件路径名转换为一个可供 shmop_open() 和其他系统VIPC keys使用的整数,proj参数必须是一个字符串,这个参数其实就是读写方式
    3 
    4 //第2个参数传一个字符串, ftok创建一个id
    5 $shmop_key = ftok(__FILE__,'b');
    6 echo $shmop_key."<br/>";

        创建id    

     1 //创建16384字节共享内存块    0600权限
     2 /*
     3  * 第2个参数
     4  * 模式 “a”,它允许您访问只读内存段
     5  * 模式 “w”,它允许您访问可读写的内存段
     6  * 模式 “c”,它创建一个新内存段,或者如果该内存段已存在,尝试打开它进行读写
     7  * 模式 “n”,它创建一个新内存段,如果该内存段已存在,则会失败
     8  */
     9 $shmop_id = shmop_open($shmop_key,'c',0600,16384);
    10 echo $shmop_id."<br/>";

        读取写入

     1 //获取整个共享内存段 后2参数 从第0字节开始读, shmop_size获取$shmop_id的字节大小
     2 $population = shmop_read($shmop_id,0,shmop_size($shmop_id));
     3 
     4 echo $population;
     5 
     6 //处理数据
     7 $births = 3000;
     8 $immigrants = 200;
     9 $deaths = 2800;
    10 $emigrants = 300;
    11 
    12 $population += ($births + $immigrants - $deaths - $emigrants);
    13 
    14 //将值存回到共享内存段 第3个参数0表示写入的位置
    15 $shmop_bytes_written = shmop_write($shmop_id,$population,0);

        关闭资源

    1 //关闭句柄
    2 shmop_close($shmop_id);

      参考:http://www.ibm.com/developerworks/cn/opensource/os-php-shared-memory/

  • 相关阅读:
    如何让create-react-app锦上添花,满足实际需求?
    《漫画算法》笔记-下篇
    《漫画算法》笔记-上篇
    react + typescript 学习
    node http 模块 常用知识点记录
    vue 相关技术文章集锦
    读后感:数据结构与算法JavaScript描述
    css 揭秘-读书笔记
    vue-textarea 自适应高度
    消除浏览器对input的自动填充
  • 原文地址:https://www.cnblogs.com/loveyouyou616/p/5546015.html
Copyright © 2020-2023  润新知