6.9. 使用队列

使用队列

上一章节中我们开发了自动生成 Slug 功能,但是因为我们的需要实时请求百度翻译接口,这将会是一个系统性能隐患。

一般情况下,网络请求会存在各种不确定性,如果请求 API 出现超时情况,或者发生不可预知的错误,我们的用户将无法发帖。

生成 Slug 只是一个 优化 功能,并非是发帖的 必要 功能,我们希望无论生成 Slug 的结果如何,用户都能顺利的发帖,并且完全察觉不到延迟。

利用队列系统可以做到这点。队列允许你异步执行消耗时间的任务,比如请求一个 API 并等待返回的结果。这样可以有效的降低请求响应的时间。

1. 配置队列

队列的配置信息储存于 config/queue.php 文件中,在这个文件中你会发现框架所支持的队列驱动的配置连接示例。这些驱动包括:数据库,Beanstalkd,Amazon SQS,Redis,和一个同步(本地使用)的驱动。还有一个名为 null 的驱动表明不使用队列任务。

本项目中,我们将使用 Redis 来作为我们的队列驱动器,先使用 Composer 安装依赖:

$ composer require "predis/predis:~1...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 72

bignose
总结要点:使用队列,监控队列
23 个点赞 | 4 个回复 | 分享 | 课程版本 5.5
proHorry
slug 与异步获取 slug (队列任务) 的笔记分享
6 个点赞 | 0 个回复 | 分享 | 课程版本 5.5
Fykex
【笔记】使用队列:什么是消息队列
5 个点赞 | 1 个回复 | 分享 | 课程版本 5.5
mmz
关于队列重复?的一个问题
4 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
running8
每一次练习都有收获,都觉得干货很多。
2 个点赞 | 0 个回复 | 分享 | 课程版本 5.7
冷无缺
Horizon 在线上环境已开启,但是队列任务不执行?
1 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
daxiaobuzhaodiao
Job 和 事件 有啥区别呢 分别使用场景是什么呢?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.7
purson
请教一下什么是序列化为什么要序列化 + 什么是依赖注入?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
pandance
为啥站点运行越来越慢?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
LiJie123
生产环境需要讲 .env 文件中更改设置 QUEUE_DRIVER=Redis 么?
1 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
Goodbye
线上环境使用 horizon,不执行任务?
1 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
john2411
为什么使用 App (SlugTranslateHandler::class)?
1 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
jollysone
使用队列,加载依赖包 Composer 报错 ?
0 个点赞 | 9 个回复 | 问答 | 课程版本 5.5
dokiss
Horizon 检测不到队列任务和错误
0 个点赞 | 7 个回复 | 问答 | 课程版本 5.7
zssen
执行 queue:failed-table 之后有错误?
0 个点赞 | 7 个回复 | 问答 | 课程版本 5.5
kangsf
安装 Composer require "Laravel/horizon:~1.0"失败 ??
0 个点赞 | 6 个回复 | 问答 | 课程版本 5.5
vhkdiy
Mac 下运行 Redis-server 后 PHP 的版本变 5.6 ?
0 个点赞 | 6 个回复 | 问答 | 课程版本 5.5
kingjian
Composer require "Laravel/horizon:~1.0"报错,是 PHP 版本太低吗?
0 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
lizhen_hahaha
谁知道啥意思啊?
0 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
dokiss
修改环境变量 QUEUE_DRIVER 的值为 Redis
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.7
phpervip
使用队列后,为何没有生成 slug,Horizon 没有显示错误
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.8
DanielDu
Horizon 路由前缀怎么修改?
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
andy-love-coding
Horizon 队列监控安全访问的问题
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
kingjian
执行 PHP artisan horizon 报错,求解?那位大佬知道
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
Janpun
队列如何判断任务是成功还是失败了
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
Luff
问下,怎么获取某个队列任务是否执行完
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
thjxs
标题 Slug
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
rundong
启动 Horizon 时报错?
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
zhangqing
安装依赖 predis,内存不足
0 个点赞 | 2 个回复 | 分享 | 课程版本 5.8
wongvio
加入队列以后报错,但是 Laravel 报错乱码
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.8
Bin
http://larabbs.test/horizon 的默认路由是在哪配置的?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
hehorange
怎么删除 horizon 中失败的任务?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
xiaofan086
\DB::table ('topics') 前面的 \ 什么意思?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
SnowZh
安装 Redis 依赖失败,该从哪里排查?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
LuckyStarD89
Laravel 自带的队列系统与 rabbitMQ 这种队列有什么不同吗?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
justlovelmn
消息队列的实际作用是什么?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
jack007
关于 listen 与 horizon 的问题?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
chaofu
安装 Horizon 保錯?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
friendOfTime
Composer require ... 的报错
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.8
时俊
使用 compose 安装 Laravel/horizon:~1.3 报错?内存不足
0 个点赞 | 1 个回复 | 分享 | 课程版本 5.7
xxr_yeah
Composer 队列时出现问题
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
user_maomin
hehorange
运行队列监听出现一个诡异的错误
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.7
将狼踩尽
Horizon 安装不起来,用的是 XAMPP
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
hustnzj
相伟
Command "queue:filed-table" is not defined.
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
Goodbye
使用队列后,新建话题成功后没有消息提示?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
phpstack
Composer require Laravel/horizon 报错了,怎么解决?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
tooyond
教程里的保存按钮为什么会有进度条?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
剑尘
如果是批量插入 怎么 发布任务???
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
FErCharles
为什么执行 PHP artisan queue:listen 命令有异常?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
yanyinge
代码是正确的, Job 执行出现差错
0 个点赞 | 0 个回复 | 分享 | 课程版本 5.7
meteor
slug 创建问题
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.5
qianfan
wanger
队列执行报错 Undefined property: App\Jobs\TranslateSlug::$topic
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.7
lijianbo2004
当创建话题 点击保存后报错 404
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.5
yandihuangdi
使用 horizon 后浏览器控制台报一大堆错误,怎么回事?
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.7
purson
请问怎样获取队列任务里面的返回值?
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.5