php消息队列如何实现
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,今天小编给大家分享一下php消息队列如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
软件开发担保平台
盖州安卓软件开发在线咨询
城市联动 json数据库
对于提升网络安全意识
网络安全自创童谣
用饭店的无线网络安全吗
潍坊商城软件开发推荐
华为hp戴尔服务器谁的性价比高
怎么打开怪物数据库
网络安全相关问题
卡巴斯基服务器版key
广州东海网络技术有限公司
软件开发压力测试
北仑软件开发系统
bms软件开发怎么样 知乎
网络安全到底还能去学么
软件开发流程文档管理
网络技术维护协议书
企业管理器找不到服务器组
哈工大网络技术中心
在数据库中查询系统
查找其他列表数据库
软件开发工作日报模板
鹰潭国际互联网科技有限公司
韩城市第七届网络安全宣传周
ios如何编程软件开发
java程序连接数据库作用
软件开发电子面单
河北外协加工软件开发教程
it网络技术员岗们职责