Laravel Jobs
laravel 队列支持:
"sync", "database", "beanstalkd", "sqs", "redis", "null"
等。。。
先用database测试
修改.env
QUEUE_CONNECTION=database
配置数据库模式的环境,原理保存在数据库,执行完成之后就删除了
php artisan queue:table
php artisan migrate
生成上图展示的数据库jobs
创建一个job
php artisan make:job test
<?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 test implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $data;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($data=[])
{
$this->data = $data;
$this->delay(6);//6秒后执行
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
var_dump($this->data);
}
}
两种方式:
添加一个job到队列中
dispatch(new \App\Jobs\test('我是队列的参数'));
test::dispatch('我是队列的参数');
上面就能跑通了,但是有时候会处理异常的情况
php artisan queue:failed-table
php artisan migrate
启动的时候有尝试的值,为如果失败了,会再次执行
php artisan queue:work --sleep=3 --tries=3
laravel框架中queue:listen 和 queue:work –daemon 的区别
三秒后再次尝试
如果不加tries 则会一直不断的循环
发现了有错误,修改了bug ,想让这个队列再跑一次
这个id 为失败的id
php artisan queue:retry 1
如果想所有的错误都跑一遍则用all
php artisan queue:retry all
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: