# 使用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、模板標簽