PHP使用共享内存-Shmop

PHP使用共享内存-Shmop

需要先开启shomp扩展才能使用

创建内存段
shmop_open ($key, $flags, $mode, $size) 函数

创建或打开共享内存块

  • $key

  • $flags 访问模式(类似文件的读写权限)

    1. 模式 “a”,它允许您访问只读内存段
    2. 模式 “w”,它允许您访问可读写的内存段
    3. 模式 “c”,它创建一个新内存段,或者如果该内存段已存在,尝试打开它进行读写
    4. 模式 “n”,它创建一个新内存段,如果该内存段已存在,则会失败
  • $mode 内存段的权限

  • $size 提供内存段大小,以字节为单位。

  • return 失败返回false,成功返回一个ID编号,其他函数可使用该ID编号操作该共享内存段。

<?php
 
$systemid = 864; // System ID for the shared memory segment
$mode = "c"; // Access mode
$permissions = 0755; // Permissions for the shared memory segment
$size = 1024; // Size, in bytes, of the segment
$shmid = shmop_open($systemid, $mode, $permissions, $size);

?>
写入数据
shmop_write ($shmid, $data, $offset) 函数
  • $shmid shmop_open 返回的 ID
  • $data 要存储的数据(string类型,类型会写入失败)
  • $offset 数据存储的起始节点
<?php
$shmid = shmop_open(864, 'c', 0755, 1024);
shmop_write($shmid, "Hello World!", 0);

?>
读取数据
shmop_read ($shmid, $start, $count) 函数
  • $shmid shmop_open 返回的 ID
  • $start 从内存段读取的位置0表示从头读
  • $count 读取的数据长度(字节)可以用shmop_size计算大小
<?php
$shmid = shmop_open(864, 'c', 0755, 1024);
$size = shmop_size($shmid);
echo shmop_read($shmid, 0, $size);

?>
删除内存段
shmop_delete ($shmid) 函数

不会实际删除该内存段。它将该内存段标记为删除,因为共享内存段在有其他进程正在使用它时无法被删除。shmop_delete 函数将该内存段标记为删除,阻止任何其他进程打开它。要删除它,我们需要关闭该内存段。

关闭内存段
shmop_close ($shmid) 函数

删除后才会从共享内存中删掉,可使用linux命令$ ipcs -m查看

$ ipcs -m
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值