Jober 工作界面:
产生背景:
项目中经常会有后台运行任务的需求,比如发送邮件时,因为要连接邮件服务器,往往需要5-10秒甚至更长时间,如果能先给用户一个成功的提示信息,然后在后台慢慢处理发送邮件的操作,显然会有更好的用户体验。
当然实际情况远不止这一点,我们可以通过Jober的配合完成 “订单超时关闭、自动评论、QQ邮箱定时发送功能等等”。
Jober 是什么
通过Swoole 官方提供Swoole/Process API才得以完成,Jober 相当于每个子进程。如果你开启8个Jober,那么就是8个进程同时消费。
核心特点
命令行:快速实现消息中间件消费、支持守护进程、常驻内存;
自动加载:基于 PSR-4 ,完全使用 Composer 构建;
模块化:支持 Composer ,可以很方便的使用第三方库;
客户端:支持Beanstalk, 理论上来说还支持RabbitMQ并且可以多进程爬虫等等;
-
Jober 特性:
可通过Queue.php配置,指定队列分配不同Jober数量;
可通过配置Crontab, 对每个队列扫描频率控制;
分配的每个Jober,完成5000个任务后自动退出重启;[ 防止内存泄漏 ]
用户停止Jober运行,管理者进程会接收到信号;通知Jober执行完手头任务在退出;
实际案例,我们想要做这样一个功能:
- QQ邮箱定时发送邮件的功能
完成步骤如下所示:
jober 安装
jober 邮件类的封装
jober 发送邮件的逻辑写在哪呢?
jober 队列配置文件
接下来具体实现过程:
-
安装Jober “composer create-project jober/jober”:
-
安装 “composer require swiftmailer/swiftmailer”,自行封装如图:
-
邮件发送逻辑封装包含日志记录如图:
-
模拟投递两封定时邮件:
-
php jober start 启动服务:
-
定时邮件发送成功提示:
-
可以发现已经成功:
到此就结束了:
1, 想要看完整代码案例,请点开 https://github.com/twomiao/Jober Git 地址。
2,小伙伴们,记得给我Star哟。Thanks♪(・ω・)ノ
3,你们的支持就是我的动力。