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 相关文章推荐
如何限制访问者的ip(PHPBB的代码)
Oct 09 PHP
PHP 变量类型的强制转换
Oct 23 PHP
php实现jQuery扩展函数
Oct 30 PHP
MySQL连接数超过限制的解决方法
Jul 17 PHP
php生成略缩图代码
Jul 16 PHP
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
Aug 25 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
PHP微信发送推送消息乱码的解决方法
Feb 28 PHP
laradock环境docker-compose操作详解
Jul 29 PHP
如何通过Apache在本地配置多个虚拟主机
Jul 29 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
2014/06/12 PHP
Javascript 日期处理之时区问题
2009/10/08 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
在vue中安装使用vux的教程详解
2018/09/16 Javascript
python中正则表达式的使用详解
2014/10/17 Python
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
python实现横向拼接图片
2020/03/23 Python
python使用pymongo与MongoDB基本交互操作示例
2020/04/09 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
Hurley官方网站:扎根于海滩生活方式的全球青年文化品牌
2020/05/18 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
医生自荐信
2013/10/11 职场文书
拖鞋店创业计划书
2014/01/15 职场文书
应届生求职信范文
2014/05/26 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
2014年医务科工作总结
2014/12/18 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
第一军规观后感
2015/06/12 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
Vue详细的入门笔记
2021/05/10 Vue.js
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android
使用python生成大量数据写入es数据库并查询操作(2)
2022/09/23 Python