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通过COM使用ADODB的简单例子
Dec 31 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
smarty表格换行实例
Dec 15 PHP
php实现无限级分类
Dec 24 PHP
PHP框架Laravel的小技巧两则
Feb 10 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
Jun 24 PHP
php分页查询的简单实现代码
Mar 14 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
Laravel 实现密码重置功能
Feb 23 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 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 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
2013/12/16 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
JavaScript面向对象精要(上部)
2017/09/12 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
货代行业个人求职简历的自我评价
2013/10/22 职场文书
语文教育专业推荐信范文
2013/11/25 职场文书
生物科学专业职业规划书范文
2014/02/11 职场文书
四年级评语大全
2014/04/21 职场文书
小学课外阅读总结
2014/07/09 职场文书
python程序的组织结构详解
2021/12/06 Python
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers