Laravel 隊列 --- database 驅動(今天剛學習了隊列,記錄下筆記)

剛學習了laravel隊列,把筆記記一下。php

1.第一步配置(.env)

QUEUE_CONNECTION=database

2.database 驅動設置

第一步:生成 jobs 數據遷移表laravel

php artisan queue:table

效果以下:
file
第二步: 建立jobs表,執行遷移命令web

php artisan migrate

效果以下:
fileapp

3.模擬數據

第一步: 進入 thinker學習

php artisan thinker

第二步:建立數據 (thinker命令)this

factory(App\User::class,10)->create();
// 建立10個用戶

打開users表 就能看到 建立的10 個新用戶spa

4.建立 Jobs及編寫

第一步:建立日誌

php artisan make:job Email

此時能在 app 目錄下生成個 Jobs 文件夾 及咱們建立的 Email.php文件code

效果以下:blog

file
第二步:編寫Email.php

<?php

namespace App\Jobs;

use App\User;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Log;

class Email implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    //定義
    public $user;
    /**
     * Create a new job instance.
     *
     *
     * @return void
     */
    public function __construct(User $user)
    {
        //賦值
        $this->user = $user;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //打印日記
        Log::info('發送的郵件是:'.$this->user->email);
    }
}

6. 建立控制器,分發任務

第一步:建立Usercontroller控制器

php artisan make:controller UserController

第二步:編寫Usercontroller

<?php

namespace App\Http\Controllers;

use App\Jobs\Email;
use App\Jobs\SendReminderEmail;
use App\User;

class UserController extends Controller
{
    //
    public function store()
    {
        $users = User::where('id','<',6)->get();

        foreach ($users as $user){
            $this->dispatch(new Email($user));
        }

        return 'Done';
    }
}

7.編寫路由 添加隊列

1.web.php

Route::get('/', 'UserController@store');

2.訪問路由後 jobs 表將會生成 符合條件的用戶
3.執行任務

php artisan queue:work

執行完命令後 jobs 剛纔添加的數據 就沒了
4.打開日誌文件
如圖:
file
會發現咱們在 Email.php handle下打印的數據

完結

相關文章
相關標籤/搜索