php 队列demo,laravel5.4队列Demo

第一步:.env文件中设置队列驱动为database,默认sync是直接执行,并不是异步队列。

QUEUE_DRIVER=database

第二步:创建保存队列的表jobs

php artisan queue:table     //生成数据库队列的(laravel 5.2和5.4字段有差异)

php artisan queue:failed-table  //处理失败的队列

migrationphp artisan migrate  //创建该数据库队列表

第三步:运行Artisan命令,生成任务类,/app/Jobs/SendReminderEmail.php

php artisan make:job SendReminderEmail

类代码如下:<?php

namespace App\Jobs;

use App\User;

use App\Jobs\Job;

use Illuminate\Support\Facades\Log;

use Illuminate\Contracts\Mail\Mailer;

use Illuminate\Queue\SerializesModels;

use Illuminate\Queue\InteractsWithQueue;

use Illuminate\Contracts\Bus\SelfHandling;

use Illuminate\Contracts\Queue\ShouldQueue;

class SendReminderEmail extends Job implements ShouldQueue, SelfHandling

{

use InteractsWithQueue, SerializesModels;

protected $data;

/**

* 创建一个新的任务实例

*

* @param  User  $user

* @return void

*/

public function __construct($data)

{

$this->data = $data;

}

/**

* 执行任务

*

* @param  Mailer  $mailer

* @return void

*/

public function handle()

{

//Log::info($this->data);

Log::info('往日志文件里写信息!');

}

/**

* The job failed to process.

*

* @param  Exception  $exception

* @return void

*/

public function failed(Exception $exception)

{

// Send user notification of failure, etc...

}

}

第四步:创建控制器,加入队列。/app/Http/Controllers/UserController.php<?php

namespace App\Http\Controllers;

use App\User;

use Carbon\Carbon;

use Illuminate\Http\Request;

use App\Jobs\SendReminderEmail;

use Illuminate\Support\Facades\Log;

use App\Http\Controllers\Controller;

class UserController extends Controller{

public function index(){

Log::info('This is a log demo!');

}

/**

* 发送提醒邮件到指定用户

*

* @param  Request  $request

* @param  int  $id

* @return Response

*/

public function sendReminderEmail($id)

{

$user = User::findOrFail($id);

$job = (new SendReminderEmail($user))

->delay(Carbon::now()->addMinutes(1));

$this->dispatch($job);

}

}

如果成功会在jobs表有条队列数据。queue默认default,可以调用onQueue('队列名'),指定队列名称。

laravel 5.2的表,5.4里去除了reserved字段。

第五步:启用任务队列

php artisan queue:listen

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值