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 相关文章推荐
ThinkPHP中实例Model方法的区别说明
Aug 21 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
php操作SVN版本服务器类代码
Nov 27 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
解析Linux下Varnish缓存的配置优化
Jun 20 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
php统计时间和内存使用情况示例分享
Mar 13 PHP
如何在HTML 中嵌入 PHP 代码
May 13 PHP
PHP实现简单实用的验证码类
Jul 29 PHP
PHP 绘制网站登录首页图片验证码
Apr 12 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 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
《OVERLORD》第四季,终于等到你!
2020/03/02 日漫
BBS(php &amp; mysql)完整版(五)
2006/10/09 PHP
PHP循环结构实例讲解
2014/02/10 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
js下写一个事件队列操作函数
2010/07/19 Javascript
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
javascript关于继承解析
2016/05/10 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
[04:16]DOTA2英雄梦之声_第09期_斧王
2014/06/21 DOTA
Python实现获取操作系统版本信息方法
2015/04/08 Python
python操作ie登陆土豆网的方法
2015/05/09 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
Python函数中的可变长参数详解
2019/09/12 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
Python使用eval函数执行动态标表达式过程详解
2020/10/17 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
python des,aes,rsa加解密的实现
2021/01/16 Python
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
法学毕业生自我鉴定
2014/01/31 职场文书
综合实践活动总结
2014/05/05 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
医院合作协议书
2014/08/19 职场文书
2014年督导工作总结
2014/11/19 职场文书
办公经费申请报告
2015/05/15 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
ConstraintValidator类如何实现自定义注解校验前端传参
2021/06/18 Java/Android
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android