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服务器实现多session并发运行
Oct 09 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 PHP
PHP求最大子序列和的算法实现
Jun 24 PHP
php获取表单中多个同名input元素的值
Mar 20 PHP
PHP+MYSQL实现用户的增删改查
Mar 24 PHP
php+ajax 实现输入读取数据库显示匹配信息
Oct 08 PHP
phalcon框架使用指南
Feb 23 PHP
PHP 中常量的知识整理
Apr 14 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
Mar 18 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 PHP
laravel 关联关系遍历数组的例子
Oct 10 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
一个ORACLE分页程序,挺实用的.
2006/10/09 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
jquery 插件学习(四)
2012/08/06 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
js表头排序实现方法
2015/01/16 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
Python数据存储之 h5py详解
2019/12/26 Python
python 常见的反爬虫策略
2020/09/27 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
玩具反斗城西班牙网上商城:ToysRUs西班牙
2017/01/19 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
企划专员岗位职责
2013/12/09 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
任命书怎么写
2015/03/02 职场文书
2015年教师节广播稿
2015/08/19 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书