问题:希望可以在进程间共享变量,为共享数据提供快速访问
解决方案:除了可以使用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/