您的位置:首页 > 编程语言 > PHP开发

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

2016-05-31 15:30 225 查看
问题:希望可以在进程间共享变量,为共享数据提供快速访问

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

//创建键
//将一个可访问的文件路径名转换为一个可供 shmop_open() 和其他系统VIPC keys使用的整数,proj参数必须是一个字符串,这个参数其实就是读写方式

//第2个参数传一个字符串, ftok创建一个id
$shmop_key = ftok(__FILE__,'b');
echo $shmop_key."<br/>";


    创建id    

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


    读取写入

//获取整个共享内存段 后2参数 从第0字节开始读, shmop_size获取$shmop_id的字节大小
$population = shmop_read($shmop_id,0,shmop_size($shmop_id));

echo $population;

//处理数据
$births = 3000;
$immigrants = 200;
$deaths = 2800;
$emigrants = 300;

$population += ($births + $immigrants - $deaths - $emigrants);

//将值存回到共享内存段 第3个参数0表示写入的位置
$shmop_bytes_written = shmop_write($shmop_id,$population,0);


    关闭资源

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


  参考:http://www.ibm.com/developerworks/cn/opensource/os-php-shared-memory/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: