0Pricing
PHP Academy · 课时

队列概念与驱动

了解异步处理,并配置数据库或 Redis 队列驱动。

队列概念与驱动 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 PHP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 PHP Academy 课程共包含 4 节课。

什么是队列?

队列可以将缓慢或消耗大量资源的任务(发送电子邮件、调整图像大小、调用外部 API)交给后台工作进程处理,从而让 HTTP 响应保持快速。

队列架构

主进程(Web 服务器)将任务推送到队列中。独立的工作进程会异步拉取并执行任务。

可用的队列驱动

Laravel 支持多个队列后端:

  • database — 将任务存储在数据库中(适合入门)
  • redis — 快速,适合生产环境
  • sqs — AWS Simple Queue Service
  • beanstalkd — 快速、轻量
  • sync — 立即运行(本地开发)

配置队列驱动

在 .env 中设置驱动。

# .env
QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379

数据库驱动设置

如果使用数据库驱动,请创建任务表。

$ php artisan queue:table
$ php artisan migrate

启动队列工作进程

工作进程会从队列中拉取并执行任务。

$ php artisan queue:work
# Or specify connection and queue:
$ php artisan queue:work redis --queue=emails,default

queue:listen 与 queue:work

queue:work 会加载一次应用,并在内存中处理任务,速度更快,但代码更改后需要重启工作进程。queue:listen 会为每个任务重新加载应用,更适合开发。

失败的任务

任务在所有重试都失败后,会存储在 failed_jobs 表中。使用 Artisan 查看并重试任务。

$ php artisan queue:failed
$ php artisan queue:retry all
$ php artisan queue:flush

队列优先级

定义多个命名队列,并在启动工作进程时分配优先级。

$ php artisan queue:work --queue=high,default,low
# Worker checks high first, then default, then low

Horizon 控制面板

对于 Redis 队列,Laravel Horizon 提供美观的实时控制面板,用于显示吞吐量、失败的任务和工作进程统计信息。

选择驱动

本地使用 sync,小型项目使用 database,生产环境扩展使用 redis。除非您已经在 AWS 中运行并需要无限扩展能力,否则应避免使用 SQS。

总结

队列会将缓慢的工作转交给后台工作进程。在 .env 中配置驱动,使用 Artisan 创建任务,并使用 queue:work 启动工作进程。在 failed_jobs 表中监控失败的任务。

快速检查

哪个队列驱动会在同一进程中立即运行任务?

常见问题解答

「队列概念与驱动」课时是免费的吗?

是的 — 「队列概念与驱动」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 PHP Academy 课程的其余内容,请升级到 CoddyKit PRO。 PHP Academy 课程共包含 4 节课。

「队列概念与驱动」这节课中我会学到什么?

了解异步处理,并配置数据库或 Redis 队列驱动。 你通过在浏览器中直接运行的动手代码来练习 PHP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 PHP Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 PHP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「队列概念与驱动」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 PHP Academy 课中编写并运行代码吗?

能。每节 PHP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 队列概念与驱动
  2. 创建和分发任务
  3. 任务重试、延迟与链式执行
  4. 使用 Laravel Horizon 监控队列
← 返回 PHP Academy