Rumah > rangka kerja php > Swoole > 一文了解swoole多进程消息系统

一文了解swoole多进程消息系统

爱喝马黛茶的安东尼
Lepaskan: 2019-11-22 16:50:46
ke hadapan
2518 orang telah melayarinya

一文了解swoole多进程消息系统

场景:适用于大部分消息队列场景,我列举几个常见地方:订单自动取消并归还库存,自动收货,群发邮件,推送微信消息模板,异步邮件发送,会员到期自动取消等等。

一、我们开始看下这个消息端系统的实现流程。

然后把业务逻辑写在Job类,分别两个方法 [ doJob => 自定义业务, after=> 业务后续操作]

1574411050(1).png

二、Serve-Queue 详细讲解流程:

1、安装 git clone https://github.com/twomiao/Serve.git , 然后执行命令:Composer install

2、cd Serve/app/ 打开目录,效果图:

1574411068(1).png

3、目录介绍: Config、Services、Utils、Job、Func 

(1)Config 配置文件目录 (Redis,MySQL,Serve-Queue)

(2)Services 业务分层 ( OrderService)

(3)Utils 工具类 (邮件,短信等等),Helper 等同

(4)Job 目录 (Job::doJob() 业务编写在里面,不要更改Job类名称)

(5)Func 常用函数 ( env, db为例)

(6)log 日志目录以及TEST目录(模拟数据文件在里面)

三、Serve-Queue 运行流程:

php serve start 命令启动:

1574411088(1).jpg

投递模拟数据, 通过 php test/placeOrder.php 1000

1574411107(1).jpg

swoole 开始多进程处理,订单数据

1574411119(1).jpg

php serve reload:平滑重启Task进程,等同更新(new Job())->doJob()方法;

新增加文字提醒 “2333, 平滑重启成功”; 哈哈,其实说明已经生效啦!

1574411133(1).jpg

1574411148(1).jpg

守护进程运行:命令执行 php serve start -d

1574411164(1).png

1574411177(1).jpg

投递一笔订单,我们测试看下呢?-1 待支付状态 0 已自动取消

1574411192(1).jpg

提醒:测试文件在 Serve/data/sp_order.sql

四、实现上述过程,需要下面的这些环境安装

1、安装Redis 作为队列, MySQL 数据库

2、通过命令 pecl install swoole, pecl install seaslog 完成扩展安装

php --ini 命令确定 php.ini 位置, 把 swoole.so 和 seaslog.so 添加上去即可

3、通过Mix Delayer 工具(实现延时)

下载地址:https://github.com/mix-basic/delayer/releases

使用说明: https://github.com/mix-basic/delayer-client-php

4、管理Serve 命令,分别有:php serve start | stop | reload | reload:all

5、Git 仓库地址:

https://github.com/twomiao/Serve.git  (Redis 延时队列)

https://github.com/twomiao/Jober 

PHP中文网,大量的免费swoole入门教程,欢迎在线学习!

Atas ialah kandungan terperinci 一文了解swoole多进程消息系统. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan