Laravel Jobs笔记

laravel 队列支持:

"sync", "database", "beanstalkd", "sqs", "redis", "null"

先用database测试

修改.env

QUEUE_CONNECTION=database

配置数据库模式的环境,原理保存在数据库,执行完成之后就删除了
Laravel Jobs笔记_第1张图片

php artisan queue:table
php artisan migrate

生成上图展示的数据库jobs

创建一个job

php artisan make:job test


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);
        //
    }

    /**
     * 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 

三秒后再次尝试

如果不加tries 则会一直不断的循环

发现了有错误,修改了bug ,想让这个队列再跑一次

这个id 为失败的id

php artisan queue:retry 1

如果想所有的错误都跑一遍则用all

php artisan queue:retry all

你可能感兴趣的:(laravel)