在 Debian 上设置 Laravel 队列(Queue),通常包括以下几个步骤:安装依赖、配置队列驱动、启动队列监听/处理进程,以及(可选)使用 Supervisor 保证队列常驻运行。下面按常见生产环境流程说明。
Laravel 队列通常需要以下扩展(以 PHP 8.2 为例):
sudo apt update
sudo apt install php8.2 php8.2-cli php8.2-common \
php8.2-curl php8.2-mbstring php8.2-xml \
php8.2-zip php8.2-redis php8.2-pdo php8.2-sqlite3
如果你使用 Redis,需要
php8.2-redis
如果你使用数据库队列,需要对应数据库扩展
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
编辑 .env 文件:
QUEUE_CONNECTION=redis
常见选项:
databaseredis(推荐)sync(同步,仅调试)如果你使用 database:
php artisan queue:table
php artisan migrate
安装 Redis:
sudo apt install redis-server
sudo systemctl enable redis
sudo systemctl start redis
确认 Redis 运行:
redis-cli ping
# 返回 PONG
php artisan make:job SendEmailJob
示例:
public function handle()
{
// 任务逻辑
}
分发任务:
SendEmailJob::dispatch($data);
php artisan queue:work
或(自动重启,适合开发):
php artisan queue:listen
⚠️ 生产环境 不要用
queue:listen
sudo apt install supervisor
sudo nano /etc/supervisor/conf.d/laravel-queue.conf
示例配置:
[program:laravel-queue]
command=php /var/www/your-project/artisan queue:work --sleep=3 --tries=3 --max-time=3600
directory=/var/www/your-project
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/your-project/storage/logs/queue.log
stopwaitsecs=3600
numprocs=2表示启动 2 个队列进程
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-queue
查看状态:
sudo supervisorctl status
php artisan queue:failed-table
php artisan migrate
php artisan queue:failed
php artisan queue:retry all
如果你不想用 Supervisor,也可以写 systemd 服务,但 Supervisor 更简单、稳定。
queue:work.env 是否配置正确php artisan queue:restart
✅ Debian + Laravel + Redis + Supervisor
✅ 使用 queue:work
✅ 使用 php artisan queue:restart 热更新
如果你愿意,我可以: