清单
5. shmop_size 函数返回内存段大小,以字节为单位
<?php
$shmid = shmop_open(864, 'c', 0755, 1024);
shmop_write($shmid, "Hello World!", 0);
$size = shmop_size($shmid);
echo shmop_read($shmid, 0, $size);
?>
回页首删除内存段
我们学习了如何打开、写入和读取共享内存段。要完成我们的
CRUD 类,我们还需要学
习如何删除内存段。该任务可使用
shmop_delete 函数轻松完成,该函数仅接受一个参数:我
们希望删除的共享内存
ID。
清单
6. shmop_delete 标记要删除的内存段
<?php
$shmid = shmop_open(864, 'c', 0755, 1024);
shmop_write($shmid, "Hello World!", 0);
shmop_delete($shmid);
?>
这不会实际删除该内存段。它将该内存段标记为删除,因为共享内存段在有其他进程正
在使用它时无法被删除。
shmop_delete 函数将该内存段标记为删除,阻止任何其他进程打开
它。要删除它,我们需要关闭该内存段。
回页首关闭内存段
打开一个共享内存段会
“附加” 到它。附加该内存段之后,我们可在其中进行读取和写
入,但完成操作后,我们必须从它解除。这使用清单
7 中的 shmop_close 函数来完成。
这非常类似于处理文件时的
fclose 函数。打开包含一个文件的流并在其中读取或写入数
据后,我们必须关闭它,否则将发生锁定。
清单
7. 使用 shmop_close 与一个内存段分开
<?php
$shmid = shmop_open(864, 'c', 0755, 1024);
shmop_write($shmid, "Hello World!", 0);
shmop_delete($shmid);
shmop_close($shmid);
?>
回页首使用共享内存作为一个存储选项
有了共享内存和共享内存段上基本
CRUD 操作的基本知识,是时候应用此知识了。我
们可以使用共享内存作为一种独特的存储选项,提供快速读
/写操作和进程互操作性等优势。
对于
Web 应用程序,这意味着:
缓存存储
(数据库查询、Web 服务数据、外部数据)
会话存储
应用程序之间的数据交换
在继续之前,我想介绍一个名为
SimpleSHM 小型库。SimpleSHM 是一个较小的抽象层
用于使用
PHP 操作共享内存,支持以一种面向对象的方式轻松操作内存段。在编写使用共
享 内 存 进 行 存 储 的 小 型 应 用 程 序 时 , 这 个 库 可 帮 助 创 建 非 常 简 洁 的 代 码 。 要 了 解
SimpleSHM,请访问 GitHub 页面。
您可以使用
3 个方法进行处理:读、写和删除。从该类中简单地实例化一个对象,可以