Menu

5.9. 使用队列

使用队列

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

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

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

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

1. 配置队列

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

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

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

本文章首发在 Laravel China 社区

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

上一篇 下一篇
讨论数量: 52

bignose
总结要点:使用队列,监控队列
16 个点赞 | 4 个回复 | 分享 | 课程版本 5.5
Fykex
【笔记】使用队列:什么是消息队列
5 个点赞 | 1 个回复 | 分享 | 课程版本 5.5
zssen
执行 queue:failed-table 之后有错误?
0 个点赞 | 7 个回复 | 问答 | 课程版本 5.5
chaofu
安装 Horizon 保錯?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
pandance
为啥站点运行越来越慢?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
john2411
为什么使用 App (SlugTranslateHandler::class)?
1 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
jack007
关于 listen 与 horizon 的问题?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
jollyson
使用队列,加载依赖包 Composer 报错 ?
0 个点赞 | 9 个回复 | 问答 | 课程版本 5.5
justlovelmn
消息队列的实际作用是什么?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
vhkdiy
Mac 下运行 Redis-server 后 PHP 的版本变 5.6 ?
0 个点赞 | 6 个回复 | 问答 | 课程版本 5.5
mmz
关于队列重复?的一个问题
4 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
rundong
启动 Horizon 时报错?
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
LuckyStarD89
Laravel 自带的队列系统与 rabbitMQ 这种队列有什么不同吗?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
Soldoros
SnowZh
安装 Redis 依赖失败,该从哪里排查?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
FErCharles
为什么执行 PHP artisan queue:listen 命令有异常?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
kangsf
安装 Composer require "Laravel/horizon:~1.0"失败 ??
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
surest
lizhen_hahaha
谁知道啥意思啊?
0 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
purson
请教一下什么是序列化为什么要序列化 + 什么是依赖注入?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
proHorry
slug 与异步获取 slug (队列任务) 的笔记分享
6 个点赞 | 0 个回复 | 分享 | 课程版本 5.5
LiJie123
生产环境需要讲 .env 文件中更改设置 QUEUE_DRIVER=Redis 么?
1 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
剑尘
如果是批量插入 怎么 发布任务???
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
xiaofan086
\DB::table ('topics') 前面的 \ 什么意思?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
purson
请问怎样获取队列任务里面的返回值?
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.5
tooyond
教程里的保存按钮为什么会有进度条?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
phpstack
Composer require Laravel/horizon 报错了,怎么解决?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
冷无缺
Horizon 在线上环境已开启,但是队列任务不执行?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
Goodbye
使用队列后,新建话题成功后没有消息提示?
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.5
hehorange
怎么删除 horizon 中失败的任务?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
相伟
Command "queue:filed-table" is not defined.
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
Bin
http://larabbs.test/horizon 的默认路由是在哪配置的?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
hustnzj
thjxs
标题 Slug
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
QiyueShiyi
问下,怎么获取某个队列任务是否执行完
0 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
Goodbye
线上环境使用 horizon,不执行任务?
1 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
Janpun
队列如何判断任务是成功还是失败了
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
kingjian
Composer require "Laravel/horizon:~1.0"报错,是 PHP 版本太低吗?
0 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
kingjian
执行 PHP artisan horizon 报错,求解?那位大佬知道
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
将狼踩尽
Horizon 安装不起来,用的是 XAMPP
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
Horizon 队列监控安全访问的问题
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
刻意练习,每日精进。
34
点赞
10507
浏览
52
讨论

作者