在 Debian 上使用 Laravel 队列,一般流程如下(适用于 Laravel 8/9/10/11):
sudo apt update
sudo apt install php php-cli php-mbstring php-xml php-curl php-zip php-mysql php-bcmath
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo apt install redis-server
sudo systemctl enable redis-server
sudo systemctl start redis-server
.envQUEUE_CONNECTION=redis
如果用数据库队列:
QUEUE_CONNECTION=database
php artisan queue:table
php artisan migrate
php artisan make:job SendEmail
编辑 app/Jobs/SendEmail.php:
public function handle()
{
// 队列逻辑
}
调用:
SendEmail::dispatch($user);
php artisan queue:work
nohup php artisan queue:work --queue=default &
sudo nano /etc/systemd/system/laravel-queue.service
内容:
[Unit]
Description=Laravel Queue Worker
After=network.target
[Service]
User=www-data
WorkingDirectory=/var/www/laravel
ExecStart=/usr/bin/php artisan queue:work --queue=default --tries=3
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable laravel-queue
sudo systemctl start laravel-queue
php artisan queue:failed-table
php artisan migrate
php artisan queue:retry all
sudo apt install supervisor
配置 /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
autostart=true
autorestart=true
numprocs=2
user=www-data
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*
php artisan queue:work
php artisan queue:listen
php artisan queue:restart
php artisan queue:failed
如果你告诉我:
我可以给你 更精确的配置示例。