安装与配置:

* 是用Composer进行安装,命令:composer require topthink/think-queue(版本加上=2.0.*)
* 配置文件位于 application/extra/queue.php(本文使用类型是Redis)
* 配置文件 application/extra/queue.php return [ 'connector' => 'Redis', 'expire' =
> 180, // 任务过期时间,若要禁止则设置为null 'default' => 'default', // 默认队列名称 'host' =>
'127.0.0.1', 'port' => '6379', 'password' => '', 'select' => 6, // redis db
'timeout' => 0, // redis连接超时时间 'persistent' => false, // 是否是长连接 ];
4.新建 application/index/controller/MyQueue.php
namespace app\index\controller; use think\Controller; use think\Queue; class
MyQueue extends Controller { public function index($job_data, $type = 'push')
//jio_data 需要发送的数据 { $job_class = "app\index\job\Message@deal"; // 任务类 -
执行时调用该类的deal方法 $job_queue_name = 'Check';// 队列名称 switch ($type) { case 'later':
$is_push = Queue::later(5, $job_class, $job_data, $job_queue_name); // 延迟发送任务 5秒
break; case 'push': $is_push = Queue::push($job_class, $job_data,
$job_queue_name); // 立即发送任务 break; } if ($is_push !== false) { echo date('Y-m-d
H:i:s') . " 新增任务" . "<br>"; } else { echo '新增任务错误'; } } }
5.新建application/index/job/Message.php(对应调用方法)
namespace app\index\job; use app\index\model\newsinfo; use think\queue\Job;
class Message { /* 处理逻辑 */ public function deal(Job $job, $data) {
//任务执行超过1次,则删除任务 $nums=$job->attempts(); if ($nums >0) { $job->delete(); } $job-
>delete(); } } //每次执行完Job之后需要delete掉,不然他会在里面反复执行
//$job->attempts()只是去获取队列给返回的data这条数据的执行次数,延时队列没有到时候是不会去执行deal这个函数的,进入就说明要执行这条数据了,attempts的次数只会在你执行失败,或者执行完了没有delete才会+1
//push是正常队列 later是延时队列 执行流程可以通过Log::write()用日志查看

技术
©2019-2020 Toolsou All rights reserved,
01-C语言之父:丹尼斯·里奇为什么 Python 不是面向未来的编程语言?利用Python处理Excel数据——xlrd,xlwt库# C# 学习笔记(4) 类C语言中四种取整方式、取余/取模的运算以及负数取模的问题java两个对象比较属性值初学者学Python一定要知道他的基础算法有哪些?作用是什么?面试经常被问到-拉链表C++实现简单的通讯录管理系统利用Python处理Excel数据——pandas库