php实现共享内存进程通信函数之_shm

sem经过我的测试,是混合型,支持数组类型,可以直接存储,直接获取,少了多余的步骤格式转换。不过sem有大小限制,shmop可以设置很大很大很大~~~不过也可以再php.ini修改相关配置。

<?PHP
$key = 0x4337b124;  
$shar_key = 1;
// 创建一个共享内存
$shm_id = shm_attach($key, 1024, 0666); // resource type
if ($shm_id === false) {
    dIE('Unable to create the shared memory segment' . PHP_EOL);
}
//设置一个值
shm_put_var($shm_id, $shar_key, 'test');

//删除一个key
shm_remove_var($shm_id, $shar_key);

//获取一个值
$value = shm_get_var($shm_id,  $shar_key);
var_dump($value);

//检测一个key是否存在
var_dump(shm_has_var($shm_id,  $shar_key));

//从系统中移除
shm_remove($shm_id);

//关闭和共享内存的连接
shm_detach($shm_id);

注意:$shar_key 只能是 int 型的参数。

详细说明

shm_attach
打开建立共享内存空间。
语法: int shm_attach(int key, int [memsize], int [perm]);
返回值: 整数
函数种类: 操作系统与环境
内容说明: 本函数用来打开或者建立共享内存空间。参数 key 为这部分的键。参数 memsize 可省略,表示所需最小的内存空间 (单位为 byte 位组),默认值在 php3.ini 或 php.ini 中的 sysvshm.init_mem 配置,若无配置则为 10000 bytes。参数 perm 亦可省略,为该内存空间的使用权限,默认值为 666。返回值为共享内存的ID 值,可供程序使用。

shm_detach
中止共享内存空间链接。
语法: int shm_detach(int shm_identifier);
返回值: 整数
函数种类: 操作系统与环境
内容说明: 本函数用来中止与共享内存空间的链接。参数 shm_identifier 即为欲停止部分的共享内存 ID 值。

shm_remove
清除内存空间。
语法: int shm_remove(int shm_identifier);
返回值: 整数
函数种类: 操作系统与环境
内容说明: 本函数用来清除共享内存空间的所有资料。参数 shm_identifier 即为欲停止部分的共享内存 ID 值。

shm_put_var
加入或更新内存空间中的变量。
语法: int shm_put_var(int shm_identifier, int variable_key, mixed variable);
返回值: 整数
函数种类: 操作系统与环境
内容说明: 本函数可用来增加或者修改内存空间中变量值。参数 shm_identifier 为欲增加修改的共享内存 ID 值。参数 variable_key 为欲增加修改的变量名称键。参数 variable 为变量的内容,变量的类型可以是倍精确数 (double)、整数 (integer)、字符串 (string) 或者是数组 (array)。

shm_get_var
取得内存空间中指定的变量。
语法: mixed shm_get_var(int shm_identifier, int variable_key);
返回值: 混合类型资料
函数种类: 操作系统与环境
内容说明: 本函数可用来取得内存空间中指定的变量值。参数 shm_identifier 为欲取得的共享内存 ID 值。参数 variable_key 为欲取得的变量名称键。返回值即为指定变量键的值。

shm_remove_var
删除内存空间中指定的变量。
语法: int shm_remove_var(int id, int variable_key);
返回值: 整数
函数种类: 操作系统与环境
内容说明: 本函数可用来删除内存空间中指定的变量值。参数 shm_identifier 为欲除去的共享内存 ID 值。参数 variable_key 为欲删除的变量名称键。


相关阅读

  • emeditor 配置 可以编辑 hex 16进制文件

    emeditor 配置 可以编辑 hex 16进制文件

    EmEditor 本身支持通过插件/功能配置实现 Hex 编辑功能。 实现方法:使用 EmEditor 的 Hex 模式EmEditor 内置了 Hex 编辑功能,无需安装第三方插件,只需简单配置即可启用,以下是完整的操作步骤: 步骤...

    2026.02.03 20:59:22作者:wintopTags:emeditorhex
  • RTX 3060(12GB显存)总结 PDF内容的智能大模型架构方案

    RTX 3060(12GB显存)总结 PDF内容的智能大模型架构方案

    显卡:RTX 3060(12GB显存)功能需求:“PDF文本总结”。下面是最优、效率最高的模型,同时明确部署方式和调优技巧,让总结速度和效果达到最佳平衡。 核心结论:最优模型选择对你的场景来说,Qwen2.5-7B-Instruct(通义...

    2026.01.22 20:04:09作者:wintop
  • python 多线程任务(下载)水平扩展线程

    python 多线程任务(下载)水平扩展线程

    方案架构说明这个方案由两个主要组件构成:任务分发器 (TaskDistributor)从 MySQL 数据库中获取待下载的文件将下载任务放入 Redis 队列标记文件状态为 "处理中"工作节点 (DownloadWork...

    2025.06.08 22:01:56作者:wintopTags:python
  • Python库实现PDF转HTML方法,可以提取目录TOC

    Python库实现PDF转HTML方法,可以提取目录TOC

    在Python中,要识别PDF中的目录(Table of Contents, TOC),通常有两种场景:直接提取PDF内置的书签(Bookmarks):如果PDF本身带有目录书签(例如电子书、技术文档),可以直接提取。自动分析文本结构推断目...

    2025.03.31 22:14:54作者:wintopTags:pythonpdf
  • grok beta 模型转发php版本,测试通过

    grok beta 模型转发php版本,测试通过

    <?php // 禁用输出缓冲 while (ob_get_level()) {     ob_end_clean(); } ob_implicit_fl...

    2024.11.26 20:32:33作者:wintop
  • FastAdmin如何在表单提交验证时不验证隐藏的元素

    FastAdmin如何在表单提交验证时不验证隐藏的元素

    在FastAdmin中使用的是nice-validator验证器,默认是验证表单中所有添加有验证规则的元素。如何在表单提交时不验证隐藏的元素呢?在nice-validator的选项中有一个ignore的选项。我们配置该值即可。首先打开控制器...

    2024.03.13 13:50:21作者:wintopTags:FastAdmin表单
  • php远程开机,远程唤醒(Wake-on-LAN)局域网电脑代码

    php远程开机,远程唤醒(Wake-on-LAN)局域网电脑代码

    首先要局域网电脑IP为固定IP,这样可以减少获取IP地址的步骤。要使用 PHP 来实现局域网中的远程唤醒(Wake-on-LAN),您可以通过以下步骤来完成:首先,确保您的服务器上已安装 PHP,并且具备发送网络数据包的权限。获取目标计算机...

    2024.03.10 11:33:33作者:wintopTags:php远程唤醒Wake-on-LAN局域网
  • Mysql 联合查询 主表和详细表查询方案

    Mysql 联合查询 主表和详细表查询方案

    mysql 多表联合查询示例:表aindex 为主表:CREATE TABLE `aindex` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `name` cha...

    2024.02.02 17:41:12作者:wintop

添加新评论