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 相关文章推荐
计数器详细设计
Oct 09 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
ThinkPHP实现支付宝接口功能实例
Dec 02 PHP
php实现转换ubb代码的方法
Jun 18 PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 PHP
PHP中类的继承和用法实例分析
May 24 PHP
PHP常用函数总结(180多个)
Dec 25 PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
什么是PHP7中的孤儿进程与僵尸进程
Apr 14 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
Oct 22 PHP
PHP实现微信提现功能(微信商城)
Nov 21 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 MYSQL中插入当前时间
2008/04/06 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
PHP使用NuSOAP调用Web服务的方法
2015/07/18 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
Node 自动化部署的方法
2017/10/17 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
python操作MySQL数据库的方法分享
2012/05/29 Python
使用python解析xml成对应的html示例分享
2014/04/02 Python
python中遍历文件的3个方法
2014/09/02 Python
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
基于python 二维数组及画图的实例详解
2018/04/03 Python
如何利用python查找电脑文件
2018/04/27 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
基于python图像处理API的使用示例
2020/04/03 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
45个非常奇妙的CSS3 特性应用示例
2012/01/01 HTML / CSS
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
男方父母婚礼答谢词
2014/01/25 职场文书
Anaconda安装pytorch及配置PyCharm 2021环境
2021/06/04 Python