在 Debian 下使用 Laravel 队列,一般包括安装环境、配置队列、启动队列 worker几个步骤。下面按常见场景(Redis / Database 队列)给你一个完整说明。
sudo apt update
sudo apt install php php-cli php-mbstring php-xml php-curl php-zip php-bcmath php-gd
如果用 Redis 队列:
sudo apt install redis-server
sudo apt install php-redis
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
.envQUEUE_CONNECTION=redis
或(数据库队列):
QUEUE_CONNECTION=database
php artisan queue:table
php artisan migrate
php artisan make:job SendEmail
在 app/Jobs/SendEmail.php 的 handle() 中写逻辑。
SendEmail::dispatch($user);
sudo systemctl enable redis-server
sudo systemctl start redis-server
composer require predis/predis
php artisan queue:work
php artisan queue:work --daemon
sudo apt install supervisor
sudo nano /etc/supervisor/conf.d/laravel-worker.conf
内容示例:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/laravel/storage/logs/worker.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*
php artisan queue:failed # 查看失败任务
php artisan queue:retry all # 重试
php artisan queue:flush # 清空失败
php artisan queue:restart # 重启 worker
QUEUE_CONNECTIONqueue:restartstorage 可写如果你愿意,可以告诉我:
我可以直接给你一份可用的 Debian 配置示例。