zoukankan      html  css  js  c++  java
  • php实现共享内存进程通信函数之_shm

    原文地址:https://www.cnblogs.com/wt645631686/p/9146737.html

    前面介绍了php实现共享内存的一个函数shmop,也应用到了项目中,不过shmop有局限性,那就是只支持字符串类型的;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 为欲删除的变量名称键。

  • 相关阅读:
    POJ 1860 Currency Exchange【bellman_ford判断是否有正环——基础入门】
    POJ 3259 Wormholes【bellman_ford判断负环——基础入门题】
    hdu 4617 Weapon【异面直线距离——基础三维几何】
    POJ 3026 Borg Maze【BFS+最小生成树】
    POJ 1789 Truck History【最小生成树简单应用】
    POJ 2485 Highways【最小生成树最大权——简单模板】
    hdu 4627 The Unsolvable Problem【hdu2013多校3签到】
    POJ 1039 Pipe【经典线段与直线相交】
    POJ 1408 Fishnet【枚举+线段相交+叉积求面积】
    Rectangles
  • 原文地址:https://www.cnblogs.com/phpk/p/10930364.html
Copyright © 2011-2022 走看看