1.数据库建表
php artisan queue:table<span> </span>//队列任务表 php artisan queue:failed-table<span> </span>//任务执行失败表 php artisan migrate
2.创建job类
<?php
namespace App\Jobs;
use App\Services\TestService;
use Illuminate\Support\Facades\Log;
class CommentInfoJob extends Job
{
public $commentService;
public $user_id;
public $comment_id;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($user_id,$comment_id)
{
$this->user_id = $user_id;
$this->comment_id = $comment_id;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
(new TestService())->testsssss($this->user_id,$this->comment_id);
}
}
3.在job类中,实现逻辑
job主要包括三个函数
- 构造函数 可选,用来传参
- handle() 必选,实现队列任务逻辑
- failed() 可选,当任务失败时执行
4.分发队列任务
dispatch(new CommentInfoJob($params['user_id'], $params['comment_id']));
5.开启队列进程,执行队列任务
php artisan queue:work
这种方式不能关闭teminal,比较不方便。所以一般使用Supervisor。
以上就可以完成一个简单的队列任务。
在laravel中有一个很关键的点:配置为database驱动。
在/config/queue.php中,需要将connections设置为database。而这一配置是从.env文件中获取的
将queue_driver配置为database。
来源:oschina
链接:https://my.oschina.net/u/4289967/blog/3274993