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下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
Apr 07 PHP
php构造函数实例讲解
Nov 13 PHP
PHP延迟静态绑定示例分享
Jun 22 PHP
PHP图片处理之图片旋转和图片翻转实例
Nov 19 PHP
THINKPHP内容分页代码分享
Jan 14 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
Feb 08 PHP
php猴子选大王问题解决方法
May 12 PHP
php通过baihui网API实现读取word文档并展示
Jun 22 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
php显示页码分页类的封装
Jun 08 PHP
php微信公众号开发之翻页查询
Oct 20 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删除数组中空值的方法介绍
2014/04/14 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
2015/12/04 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
JS实现复制功能
2017/03/01 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
python求众数问题实例
2014/09/26 Python
在Python的框架中为MySQL实现restful接口的教程
2015/04/08 Python
初步理解Python进程的信号通讯
2015/04/09 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
python中shell执行知识点
2020/05/06 Python
python的链表基础知识点
2020/09/13 Python
意大利奢侈品网站:Italist
2016/08/23 全球购物
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
元旦文艺汇演主持词
2014/03/26 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
联村联户简报
2015/07/21 职场文书
2019邀请函格式及范文
2019/05/20 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
Django migrate报错的解决方案
2021/05/20 Python
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python