0%

轻量级消息队列php-resque使用

因实际项目需求,需要一些在后台长时间运行一些比较耗时的任务,e.g:邮件,app推送消息,报表生成..,寻了几种方案swoole,php-resque,workman,最终选择了php-resque,比较喜欢Ta的设计简洁清晰,足够轻量,能满足目前的大部分需求

设计思想

导读

php-resque 的设计思想来源于 Ruby 的项目 resque,这是各种语言实现版本,更多文档请查阅官方文档

设计思路&角色划分

Worker 执行者

负责将redis 队列中的 Job取出,并调用执行指定的 Job(Class),同时负责维护 Job 状态;
一个Worker可以处理多个队列,可以开启多个worker加快处理速度

Queue 队列

队列通过 redis 队列实现,

Job 任务

一个Job就是一个需要在后台需要执行的任务,在php-resque的实现中,一个Class就是一个Job

使用基本流程

0x00 将一个后台任务编写为一个独立的Class,这个Class就是一个Job

0x01 在需要使用后台程序的地方,系统将Job Class的名称以及所需参数放入队列。

0x02 以命令行方式开启一个Worker,并通过参数指定Worker所需要处理的队列。

0x03 Worker作为守护进程运行,并且定时检查队列。

0x04 当队列中有Job时,Worker取出Job并运行,即实例化Job Class并执行Class中的方法。

安装

安装依赖

redis

php

使用 TODO

Job相关

编写Job

将Job插入队列

Job状态查看

Worker相关

启动,重启,停止

日志收集