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图片上传类带图片显示
Nov 25 PHP
PHP高级OOP技术演示
Aug 27 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 PHP
分享50个提高PHP执行效率的技巧
Dec 26 PHP
php等比例缩放图片及剪切图片代码分享
Feb 13 PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 PHP
分享PHP-pcntl 实现多进程代码
Sep 30 PHP
yii通过小物件生成view的方法
Oct 08 PHP
PHP开发APP端微信支付功能
Feb 17 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
laravel框架创建授权策略实例分析
Nov 22 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 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无限极分类实现的两种解决方法
2013/04/28 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
sails框架的学习指南
2014/12/22 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
vue实现菜单切换功能
2019/05/08 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
python中学习K-Means和图片压缩
2017/11/20 Python
Python中str.join()简单用法示例
2018/03/20 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
消防安全汇报材料
2014/02/08 职场文书
社会调查研究计划书
2014/05/01 职场文书
平面设计师岗位职责
2014/09/18 职场文书
总经理岗位职责
2015/02/04 职场文书
土建施工员岗位职责
2015/04/11 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
在js中修改html body的样式
2021/11/11 Javascript