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 相关文章推荐
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
Aug 19 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
php给图片添加文字水印方法汇总
Aug 27 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
Mar 01 PHP
PHP函数import_request_variables()用法分析
Apr 02 PHP
PHP数组相加操作及与array_merge的区别浅析
Nov 26 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
Jun 20 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
php实现表单提交上传文件功能
May 28 PHP
php使用环形链表解决约瑟夫问题完整示例
Aug 07 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
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
showModelessDialog()使用详解
2006/09/07 Javascript
jquery 简单的进度条实现代码
2010/03/11 Javascript
使用JavaScript 实现各种跨域的方法
2013/05/08 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
Angular工具方法学习
2016/12/26 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
Python写入CSV文件的方法
2015/07/08 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
Pycharm学习教程(1) 定制外观
2017/05/02 Python
Python实现求数列和的方法示例
2018/01/12 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
经典c++面试题六
2012/01/18 面试题
中学生获奖感言
2014/02/04 职场文书
打架检讨书2000字
2014/02/22 职场文书
商铺消防安全责任书
2014/07/29 职场文书
满月酒邀请函
2015/01/30 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL