# 队列配置
# 队列 (Queue) 服务配置
对于需要处理大量邮件发送或后台任务的站点,配置队列是必须的。
# 为什么需要队列?
队列可以将耗时的任务(如发送订单邮件、生成语言包)放在后台异步执行,避免前端页面卡顿。
启用队列来处理邮件任务,配置步骤如下:
# 1.配置数据库驱动来处理队列
(1)在.env文件中,设置队列的驱动为database
QUEUE_CONNECTION=database
(2)在网站根目录下,执行命令创建表(failed_jobs、jobs)
php artisan queue:table
php artisan migrate
这两条命令会分别创建用于存储队列任务的表 jobs 和存储失败任务的表 failed_jobs。
(3)执行命令,启用队列
php artisan queue:work -v
# 2.处理常见问题
(1)查看相关的表 failed_jobs、jobs、notifications(可以使用数据库管理工具查看这些表中的数据。)
(2)查看控制台输出信息(执行 php artisan queue:work -v 命令时,控制台会输出任务的执行过程。如果有问题,它会显示错误信息,帮助你诊断任务处理过程中出现的问题。)
# 3.在生产环境中,你需要一种方法来保持 queue:work 进程运行。
queue:work 进程可能会因多种原因停止运行,例如超过 worker 超时或执行 queue:restart 命令。 出于这个原因,你需要配置一个队列服务,它可以检测你的 queue:work 进程何时退出并自动重新启动它们。
(1) 打开宝塔终端,进入/lib/systemd/system目录
cd /lib/systemd/system
(2) 新建beikeshop.service
vim beikeshop.service
(3)在创建的 beikeshop.service 文件中,填入以下内容:
[Unit]
Description=BeikeShop Queue Worker
[Service]
Type=simple
User=www
Restart=on-failure
ExecStart=/usr/bin/php /你的网站根目录/artisan queue:work --queue=default
[Install]
WantedBy=multi-user.target
保存并退出
# 服务管理命令
在服务创建完成后,可以通过以下命令来管理 beikeshop.service 服务:
sudo systemctl start beikeshop.service //启动
sudo systemctl stop beikeshop.service //停止
sudo systemctl restart beikeshop.service //重启
sudo systemctl status beikeshop.service //查看状态
sudo systemctl enable beikeshop.service //开机启动