background image

  清单

 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 个方法进行处理:读、写和删除。从该类中简单地实例化一个对象,可以