温馨提示×

linux laravel怎么队列

小樊
34
2026-10-27 19:37:35
栏目: 智能运维

在 Linux + Laravel 环境下使用队列(Queue),一般流程如下:


一、配置队列

1. 修改 .env

常用队列驱动:database、redis

使用 database(最简单)

QUEUE_CONNECTION=database

使用 redis(推荐生产环境)

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

二、创建队列数据表(database 驱动才需要)

php artisan queue:table
php artisan migrate

三、创建 Job(队列任务)

php artisan make:job SendEmail

编辑 app/Jobs/SendEmail.php:

public function handle()
{
    // 队列逻辑
}

四、投递任务到队列

use App\Jobs\SendEmail;

SendEmail::dispatch($user);

或延迟:

SendEmail::dispatch($user)->delay(now()->addMinutes(5));

五、Linux 启动队列消费者(重点)

1. 普通启动(测试用)

php artisan queue:work

2. 常驻进程(推荐)

使用 nohup

nohup php artisan queue:work --queue=default --tries=3 &

使用 Supervisor(生产推荐)

安装:

yum install supervisor
# 或
apt install supervisor

配置 /etc/supervisor/conf.d/laravel-queue.conf:

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

启动:

supervisorctl reread
supervisorctl update
supervisorctl start laravel-queue:*

六、常用命令

php artisan queue:work        # 单次执行
php artisan queue:listen      # 监听(不推荐生产)
php artisan queue:retry all   # 重试失败任务
php artisan queue:failed      # 查看失败任务
php artisan queue:flush       # 清空失败任务

七、常见问题

✅ 队列不执行

  • 没启动 queue:work
  • .env 缓存:php artisan config:clear

✅ 代码更新无效

php artisan queue:restart

✅ Linux 权限问题

chown -R www:www storage bootstrap/cache

如果你是 Redis / 定时任务 / 多队列 / 失败重试 场景,可以告诉我,我可以给你更具体的配置示例。

0 踩