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常用代码
Nov 23 PHP
phpinfo 系统查看参数函数代码
Jun 05 PHP
PHP 高级课程笔记 面向对象
Jun 21 PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
Jun 21 PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 PHP
利用php递归实现无限分类 格式化数组的详解
Jun 08 PHP
对于PHP 5.4 你必须要知道的
Aug 07 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
Jul 14 PHP
php自定义函数实现二维数组排序功能
Jul 20 PHP
PHP 将dataurl转成图片image方法总结
Oct 14 PHP
php数组指针操作详解
Feb 14 PHP
Laravel重定向,a链接跳转,控制器跳转示例
Oct 22 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
77A一级收信机修理记
2021/03/02 无线电
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
php接口和抽象类使用示例详解
2014/03/02 PHP
ThinkPHP之用户注册登录留言完整实例
2014/07/22 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python如何统计序列中元素
2020/07/31 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
应届毕业生求职信范文
2014/05/08 职场文书
幼儿园大班区域活动总结
2014/07/09 职场文书
班级出游活动计划书
2014/08/15 职场文书
初婚未育证明样本
2014/10/24 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL