Login
网站首页 > 文章中心 > 其它

基于swoole+Redis的消息实时推送通知

作者:小编 更新时间:2023-09-29 14:00:54 浏览量:241人看过

swoole+Redis将实时数据的推送

一 实现功能

环境

centos⑥10
redis-④0.2
swoole-src-④④12
php-⑦1.5
MYsyql⑤7


基于swoole+Redis的消息实时推送通知-图1

二 实现流程

1.开启swoole server端监听
2.开启swoole client连接执行定时执行
③使用swoole task 异步执行推送逻辑

开始监听

服务端窗口

# php71 pushServer.php

client连接执行开始任务

# php71 pushClient.php start

开启后服务端窗口的变化

[root@111111 swoole_server]# php71 pushServer.php 
Client-1: 连接成功
reactor-7 Client-1 接受数据: data=start 
Client-1: 连接结束
Client-2: 连接成功
reactor-0 Client-2 接受数据: data=start 
Client-3: 连接成功
Client-2: 连接结束
reactor-7 Client-3 接受数据: data=start 
Client-3: 连接结束
Client-4: 连接成功
reactor-0 Client-4 接受数据: data=start 
Client-4: 连接结束
Client-5: 连接成功
reactor-7 Client-5 接受数据: data=start 
Client-5: 连接结束
2019-12-14 01:29:15reactor-7 client-1 timer-2: 定时器第1 次执行

redis添加数据

redis添加数据

向order_designer_list队列中添加数据

12⑦0.0.1:6379> LPUSH order_designer_list 1912136916313##150481##1576140373##oLvqQwo25p5myELvO5VXj0k-7ngk##李伟测试##13926
(integer) 1
12⑦0.0.1:6379> LRANGE order_designer_list 0 10
1) "1912136916313##150481##1576140373##oLvqQwo25p5myELvO5VXj0k-7ngk##李伟测试##13926"

值为:订单号##orderId##分配到期时间(uninx时间戳)##微信openid##设计师用户名##设计师userid

服务端窗口的变化

2019-12-14 01:29:15reactor-7 client-1 timer-2 taskid=0 :投递异步任务 data=1912136916313_150481_1576140373_oLvqQwo25p5myELvO5VXj0k-7ngk_李伟测试_13926
2019-12-14 01:29:15执行任务 id=0  data= 1912136916313_150481_1576140373_oLvqQwo25p5myELvO5VXj0k-7ngk_李伟测试_13926 
任务完成 id=0 结果=1912136916313_150481_1576140373_oLvqQwo25p5myELvO5VXj0k-7ngk_李伟测试_13926已经派单过

task任务执行逻辑

数据分析数据通过微信消息模板接口,将信息内容发送到客户微信公众号上将监控日志和错误日志写入mysql数据库

三 项目代码结构

├── composer.json
├── composer.lock
├── swoole_server
│? ├── 2019-12-13-swoole.log
│? ├── 2019-12-14-swoole.log
│? ├── DispatchOrder.php
│? ├── pushClient.php
│? ├── pushServer.php
│? ├── Runtime.php
└── vendor
│? ├── 忽略php类库文件
│? ├── ....

conposer.json

{
}
}

pushServer.php

 date("Y-m-d") . '-swoole.log',
]);
$object = new swoolePush();
//监听连接进入事件
$serv->on('Connect', [$object, 'connectHandle']);
//监听数据接收事件
$serv->on('Receive', [$object, 'receiveHandle']);
//监听连接关闭事件
$serv->on('Close', [$object, 'closeHandle']);
//处理异步任务
$serv->on('task', [$object, 'taskHandle']);
//处理异步任务的结果
$serv->on('finish', [$object, 'finishHandle']);
//启动服务器
$serv->start();

pushClient.php


DispatchOrder.php


Runtime.php


欢迎留言交流

以上就是土嘎嘎小编为大家整理的基于swoole+Redis的消息实时推送通知相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章