php进程(线程)通信基础之System V共享内存简单实例分析


Posted in PHP onNovember 09, 2019

本文实例讲述了php进程(线程)通信基础之System V共享内存。分享给大家供大家参考,具体如下:

PHP默认情况没有开启功能,要支持该功能在编译PHP的时候要加入下面几个选项  System V消息,--enable-sysvmsg   System V信号量支持,--enable-sysvsem  System V共享内存支持,--enable-sysvshm

PHP还挺shmop共享内存,在编译的时候开启 --enable-shmop

System V共享内存的相关函数:

1: 创建信号量唯一标识符

$ftok = ftok(__FILE__, 'a');

2: 创建共享内存端

$id = shm_attach ( $ftok, 1000 , 0666 )

3: 断开与共享内存段的连接

shm_detach ( $id )

4: 获取一个变量值

$val = shm_get_var ( $id , $key )

5: 检测变量是否存在

shm_has_var ( $id , $key )

6: 添加一个值到共享内存里

shm_put_var ( $id , $key , $val )

7: 从共享内存中删除一个变量

shm_remove_var ( $id , $key )

8: 从系统中删除共享内存

shm_remove ( $id)
<?php
$tmp = tempnam(__FILE__, 'PHP');
$key = ftok($tmp, 'a');
$shmid = shm_attach($key);
$counter = 0;
shm_put_var( $shmid, 1, $counter );
class CounterThread extends Thread {
 public $shmid;
 public $is_runing = true;
 public function __construct($shmid){
  $this->shmid = $shmid;
 }
 public function run() {
  $counter = shm_get_var( $this->shmid, 1 );
  $counter++;
  shm_put_var( $this->shmid, 1, $counter );
  printf("Thread #%lu says: %s\n", $this->getThreadId(),$counter);
 }
}
for ($i=0;$i<10;$i++){
 $threads[] = new CounterThread($shmid);
}
for ($i=0;$i<10;$i++){
 $threads[$i]->start();
}
for ($i=0;$i<10;$i++){
 $threads[$i]->join();
}
shm_remove( $shmid );
shm_detach( $shmid );

php进程(线程)通信基础之System V共享内存简单实例分析

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php中的时间显示
Jan 18 PHP
用PHP的ob_start();控制您的浏览器cache!
Feb 14 PHP
PHP字符串的编码问题的详细介绍
Apr 27 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
Feb 18 PHP
PHP转盘抽奖接口实例
Feb 09 PHP
64位windows系统下安装Memcache缓存
Dec 06 PHP
Yii中实现处理前后台登录的新方法
Dec 28 PHP
thinkPHP自定义类实现方法详解
Nov 30 PHP
php字符集转换
Jan 23 PHP
详谈phpAdmin修改密码后拒绝访问的问题
Apr 03 PHP
详解thinkphp中的volist标签
Jan 15 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 PHP
PHP多进程简单实例小结
Nov 09 #PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 #PHP
PHP用swoole+websocket和redis实现web一对一聊天
Nov 05 #PHP
基于thinkphp6.0的success、error实现方法
Nov 05 #PHP
php实现JWT(json web token)鉴权实例详解
Nov 05 #PHP
详解Laravel服务容器的绑定与解析
Nov 05 #PHP
php+laravel依赖注入知识点总结
Nov 04 #PHP
You might like
PHP XML数据解析代码
2010/05/26 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
php中动态修改ini配置
2014/10/14 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
[09:43]DOTA2每周TOP10 精彩击杀集锦vol.5
2014/06/25 DOTA
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
人机交互程序 python实现人机对话
2017/11/14 Python
使用requests库制作Python爬虫
2018/03/25 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
Python对列表的操作知识点详解
2019/08/20 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
夜大自我鉴定
2013/10/31 职场文书
公司建议书怎么写
2014/05/15 职场文书
党员个人公开承诺书
2014/08/29 职场文书
党代会心得体会
2014/09/04 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
开会通知
2015/04/20 职场文书
入党自传范文2015
2015/06/26 职场文书
初中英语教学反思范文
2016/02/15 职场文书