温馨提示×

linux laravel怎样做队列

小樊
42
2026-09-25 11:40:50
栏目: 智能运维

在 Linux 上使用 Laravel 队列(Queue),一般流程如下(以最常用的 Redis 驱动为例):


一、环境准备

1. 安装必要的软件

# Redis(推荐)
sudo apt install redis-server

# 启动 Redis
sudo systemctl start redis
sudo systemctl enable redis

2. 安装 Laravel 依赖

composer require predis/predis
# 或
composer require laravel/redis

二、配置 Laravel 队列

1. 修改 .env

QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

2. 配置 config/queue.php

确认 redis 配置正确(默认已存在)。


三、创建队列任务

php artisan make:job SendEmail

编辑 app/Jobs/SendEmail.php:

public function handle()
{
    // 队列逻辑
    logger('队列执行了');
}

调用任务:

SendEmail::dispatch();
// 或延迟
SendEmail::dispatch()->delay(now()->addMinutes(5));

四、启动队列监听器(关键)

方式一:直接运行(测试用)

php artisan queue:work

方式二:常驻进程(生产推荐)

php artisan queue:work --daemon

五、Linux 后台稳定运行(Supervisor)

1. 安装 Supervisor

sudo apt install supervisor

2. 创建配置文件

sudo vim /etc/supervisor/conf.d/laravel-queue.conf

内容:

[program:laravel-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/your-project/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/your-project/storage/logs/queue.log

3. 启动

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-queue:*

六、失败任务处理

php artisan queue:failed

# 重试
php artisan queue:retry all

# 清理
php artisan queue:flush

七、常用命令总结

php artisan queue:work      # 处理队列
php artisan queue:listen    # 监听(不推荐生产)
php artisan queue:restart   # 重启队列(代码更新后)
php artisan queue:clear     # 清空队列

如果你用的是 数据库队列 或 RabbitMQ,或者想了解 定时任务 + 队列,可以继续问我。

0 踩