thinkphp6队列的使用
原创
©著作权归作者所有:来自51CTO博客作者廖圣平_的原创作品,请联系作者获取转载授权,否则将追究法律责任
官方文档
https://packagist.org/packages/topthink/think-queue
安装
composer require topthink/think-queue
sync 模式
同步的操作,过渡方案,小团队,或者测试环境推荐
database 模式
数据库模式,原理是通过轮训,看数据是3~4秒执行一次,感觉这个频率应该是可以调整的,对于数据非常非常敏感的时候,可以使用这个模式,但是数据库压力特别大的时候,这种模式不推荐。
如果使用这个模式,先要创建jobs 表,存储队列的信息
php think queue:table
php think queue:failed-table
php think migrate:run
redis 模式
redis 肯定是业内推荐的模式了,好处多多。
使用方法:
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){
// ...任务达到最大重试次数后,失败了
}
}
think\facade\Queue::push($job, $data = '', $queue = null) 和 think\facade\Queue::later($delay, $job, $data = '', $queue = null) 两个方法,前者是立即执行,后者是在$delay秒后执行
其他具体教程