刚学习了laravel队列,把笔记记一下。
1.第一步配置(.env)
QUEUE_CONNECTION=database
2.database 驱动设置
第一步:生成 jobs 数据迁移表
php artisan queue:table
效果如下:
第二步: 创建jobs表,执行迁移命令
php artisan migrate
效果如下:
3.模拟数据
第一步: 进入 thinker
php artisan thinker
第二步:创建数据 (thinker命令)
factory(App\User::class,10)->create();
// 创建10个用户
打开users表 就能看到 创建的10 个新用户
4.创建 Jobs及编写
第一步:创建
php artisan make:job Email
此时能在 app 目录下生成个 Jobs 文件夹 及我们创建的 Email.php文件
效果如下:
第二步:编写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.打开日志文件
如图:
会发现我们在 Email.php handle下打印的数据
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。