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实现utf-8和GB2312编码相互转换函数代码
Feb 07 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
PHP页面输出时js设置input框的选中值
Sep 30 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 PHP
Yii框架常见缓存应用实例小结
Sep 09 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
BBS(php &amp; mysql)完整版(五)
2006/10/09 PHP
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHP小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
php返回json数据函数实例
2014/10/09 PHP
文本加密解密
2006/06/23 Javascript
js滚动条多种样式,推荐
2007/02/05 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
jQuery中delegate()方法用法实例
2015/01/19 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python 正则表达式入门(中级篇)
2016/12/07 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
Python整数对象实现原理详解
2019/07/01 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
什么是测试驱动开发(TDD)
2012/02/15 面试题
外企办公室竞聘演讲稿
2013/12/29 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
JavaScript实现简单拖拽效果
2021/09/15 Javascript
无线电知识基础入门篇
2022/02/18 无线电
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js