意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

Laravel 新篇章(1):使用队列

来源:恒创科技 编辑:恒创科技编辑部
2024-01-09 08:17:59


1、在.env文件中进行配置(默认为异步,数据库)

QUEUE_CONNECTION=database

2、生成队列表


Laravel 新篇章(1):使用队列

php artisan queue:table

执行

php artisan migrate

3、数据库中会生成jobs和failed_jobs两张表

jobs存放未执行的队列

failed_jobs存放执行失败的队列

4、生成Job类(位于app\Jobs\SendEmailJob.php)

php artisan make:job SendEmailJob

编辑(在handle里面写业务逻辑,比如发送邮件、发送短信、发送微信模板消息)

namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class SendEmailJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $email;
public function __construct($email)
{
$this->email = $email;
}
public function handle()
{
Email::send($this->email);
}

}

5、在业务逻辑中使用(比如向所有用户发送优惠信息邮件)

foreach(User::select(['email'])->pluck('email')->toArray() as $email){
dispatch(SendEmailJob($email));
}

注:此步并不会发送邮件,只是把发送邮件添加到队列里面,此时打开jobs表,会发现记录

6、运行队列

php artisan queue:work

队列开始执行,当队列执行完毕时,jobs表为空,如果有执行失败的条目,将会存到failed_jobs表里面

此外,可用supervison守护进程

7、宝塔面板使用supervison守护队列进程

7.1、宝塔面板-软件-supervison-安装

7.2、打开,添加守护进程

名称:test

启动用户:root或者www

运行目录:/www/wwwroot/abc.com (项目根目录)

启动命令:/www/server/php/74/bin/php artisan queue:work

进程数量:1

7.3、点击创建,会自动启动该命令

上一篇: laravel 开发拓展包 下一篇: Laravel 新篇章(2):使用定时任务