php消息队列如何实现
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,今天小编给大家分享一下php消息队列如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一
千家信息网最后更新 2025年01月31日php消息队列如何实现
今天小编给大家分享一下php消息队列如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
说明
1、消息队列是存放在内存中的一个队列。
2、由于消息队列去数据是,只有一个进程能去到,所以不需要额外的锁或信号量。
实例
echo "parent progress pid:{$parentPid}\n";$childList = array();// 创建消息队列,以及定义消息类型(类似于数据库中的库)$id = ftok(__FILE__,'m');$msgQueue = msg_get_queue($id);const MSG_TYPE = 1;// 生产者function producer(){ global $msgQueue; $pid = posix_getpid(); $repeatNum = 5; for ( $i = 1; $i <= $repeatNum; $i++) { $str = "({$pid})progress create! {$i}"; msg_send($msgQueue,MSG_TYPE,$str); $rand = rand(1,3); sleep($rand); }}// 消费者function consumer(){ global $msgQueue; $pid = posix_getpid(); $repeatNum = 6; for ( $i = 1; $i <= $repeatNum; $i++) { $rel = msg_receive($msgQueue,MSG_TYPE,$msgType,1024,$message); echo "{$message} | consumer({$pid}) destroy \n"; $rand = rand(1,3); sleep($rand); }}function createProgress($callback){ $pid = pcntl_fork(); if ( $pid == -1) { // 创建失败 exit("fork progress error!\n"); } else if ($pid == 0) { // 子进程执行程序 $pid = posix_getpid(); $callback(); exit("({$pid})child progress end!\n"); }else{ // 父进程执行程序 return $pid; }}// 3个写进程for ($i = 0; $i < 3; $i ++ ) { $pid = createProgress('producer'); $childList[$pid] = 1; echo "create producer child progress: {$pid} \n";}// 2个写进程for ($i = 0; $i < 2; $i ++ ) { $pid = createProgress('consumer'); $childList[$pid] = 1; echo "create consumer child progress: {$pid} \n";}// 等待所有子进程结束while(!empty($childList)){ $childPid = pcntl_wait($status); if ($childPid > 0){ unset($childList[$childPid]); }}echo "({$parentPid})main progress end!\n";
以上就是"php消息队列如何实现"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
消息
队列
进程
知识
篇文章
内容
数据
程序
不同
很大
信号
内存
只有
大部分
实例
就是
数据库
更多
消费者
生产者
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全教育活动宣传标语
附加数据库602
延安软件开发价格多少
云服务器安全保障措施
WJCI数据库申请
网络安全与保密 胡建伟
湖北服务器虚拟化安装服务器
宁乡软件开发培训
全市网络安全和信息化会议
如何查看服务器的数据包
网络技术成果
清理数据库
中国数据库技术大会 怎样
存储服务器与设计服务器区别
新视力网络技术
网络安全 学生调查问卷
原神深境数据库
服务器连接密码忘了怎么办
下列有关数据库技术的叙述中
纵歌长安服务器有人玩吗
软件开发需求评审项目管理
x3650 服务器
阆中天气预报软件开发
税务网络安全态势感知系统
为什么育碧服务器不稳定
查看数据库的命令及语句是
中国为什么没有数据库软件
网络技术成果
金融科技和互联网合作
长江大学计算机网络技术