# 使用think-queue队列笔记
## 一、安装
github地址:
[top-think/think-queue: ThinkPHP 队列支持 (github.com)](https://github.com/top-think/think-queue)
composer 安装:
~~~
composer require topthink/think-queue
~~~
## 二、配置:
> 配置文件位于`config/queue.php`
### 公共配置
~~~
[
'default'=>'sync' //驱动类型,可选择 sync(默认):同步执行,database:数据库驱动,redis:Redis驱动//或其他自定义的完整的类名
]
~~~
## 使用:
任务类不需继承任何类,如果这个类只有一个任务,那么就只需要提供一个`fire`方法就可以了,如果有多个小任务,就写多个方法,下面发布任务的时候会有区别
每个方法会传入两个参数`think\queue\Job $job`(当前的任务对象) 和`$data`(发布任务时自定义的数据)
还有个可选的任务失败执行的方法`failed`传入的参数为`$data`(发布任务时自定义的数据)
案例:
~~~
namespace app\job;
use think\queue\Job;
class Job1{
public function fire(Job $job, $data){
//....这里执行具体的任务
if ($job->attempts() > 3) {
//通过这个方法可以检查这个任务已经重试了几次了
}
//如果任务执行成功后 记得删除任务,不然这个任务会重复执行,直到达到最大重试次数后失败后,执行failed方法
$job->delete();
// 也可以重新发布这个任务
$job->release($delay); //$delay为延迟时间
}
public function failed($data){
// ...任务达到最大重试次数后,失败了
}
}
~~~
~~~
namespace app\lib\job;
use think\queue\Job;
class Job2{
public function task1(Job $job, $data){
}
public function task2(Job $job, $data){
}
public function failed($data){
}
}
~~~
~~~
$jobPushAll = "\app\job\PushAll";
Queue::push($jobPushAll, [
'article' => '',
'admin_id' => 0,
'push_content' => $param,
'push_app' => $device_type,
'mobile_arr' => json_encode($mobileArr),
'push_active' => 1 //后台活动推送
], 'push_all_active_job_queue');
~~~
## 监听任务并执行
~~~
&> php think queue:listen
&> php think queue:work
~~~
### supervisor使用:
~~~
think queue:listen --queue push_all_active_job_queue
~~~
- thinkphp
- thinkphp笔记
- 后台登陆退出
- config配置
- 隐藏后台模块
- 单独调用腾讯云行为验证码
- api接口跨域问题
- api接口创建案例代码
- 使用gateway worker
- 使用swoole代码笔记
- 使用队列 think-queue笔记
- 后台布局
- MySQL
- 1、关于lnmp mysql的一个坑
- 2、mysql实现group by后取各分组的最新一条
- 其他
- 搞笑的注释代码
- 分页类
- nodejs 打包网址为exe
- 免费天气预报API接口
- Ajax
- 简单的ajax分页1
- 通用ajax-post提交
- 引用的类库文件
- Auth.php
- Auth.php权限控制对应的数据库表结构
- Layui.php
- Pinyin.php
- Random.php
- Tree.php
- Tree2.php
- Js-Jq
- Git的使用
- 3、bootstrap-datetimepicker实现两个时间范围输入
- CentOS安装SSR做梯子
- Python爬虫
- 1、安装Gerapy
- 2、安装Scrapy
- 3、Scrapy使用
- 4、Scrapy框架,爬取网站返回json数据(spider源码)
- 0、Python pip更换国内源(一句命令换源)
- 服务器运维
- 1、宝塔使用webhook更新服务器代码
- 2、搭建内网穿透
- 3、数据库主从同步
- 4、数据库复制
- hui-Shop问题
- 1、前端模板的注意事项
- 2、模板标签