美文网首页
laravel使用队列 --- 2021-09-30

laravel使用队列 --- 2021-09-30

作者: 一位先生_ | 来源:发表于2021-09-30 20:23 被阅读0次
image.png
  1. 先去配置文件中queue.php文件中你选择的是哪种驱动方式


    image.png

去.env中设置,我这里设置的是database,当然你也可以设置redis或其它方式
![image.png](https://img.haomeiwen.com/i9183555/e43c180151ed36d2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

2.使用命令创建对列表

php artisan queue:table

php artisan migrate

这时候可以看到migrations中生成了文件,使用migrate命令生成job表

  1. 创建任务
    php artisan make:job SendMessage

这时我们会看到app目录下有个jobs文件夹,里面是我们的发送信息文件
修改SendMessage 文件:

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class SendMessage implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    private $notice;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct(\App\Notice $notice)
    {
        $this->notice = $notice;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        // 通知每个用户系统消息
        $users = \App\User::all();
        foreach ($users as $user) {
            $user->addNotice($this->notice);
        }
    }
}

4.创建分发逻辑(创建消息的时候)


image.png
<?php

namespace App\Admin\Controllers;

class NoticeController extends Controller
{
    public function index()
    {
        $notices = \App\Notice::all();
        return view('admin/notice/index', compact('notices'));
    }

    public function create()
    {
        return view('admin/notice/create');
    }

    public function store()
    {
        $this->validate(request(), [
            'title' => 'required|string',
            'content' => 'required|string',
        ]);

        $notice = \App\Notice::create(request(['title', 'content']));

        dispatch(new \App\Jobs\SendMessage($notice));

        return redirect("/admin/notices");
    }


}
  1. 启动队列
    php artisan queue:work

这个时候你就可以创建你的消息通知了,创建之后用户就会看到消息了
结束。

相关文章

网友评论

      本文标题:laravel使用队列 --- 2021-09-30

      本文链接:https://www.haomeiwen.com/subject/waaenltx.html