php artisan queue:failed-table
命令来创建这个数据表的迁移。当迁移创建好以后,就可以用 migrate 这条命令来创建数据表:
php artisan migrate
执行命令讲解
php artisan queue:work --daemon --quiet --queue=default --delay=3 --sleep=3 --tries=3
--daemon
The queue:work Artisan command includes a --daemon option for forcing the queue worker to continue processing jobs without ever re-booting the framework. This results in a significant reduction of CPU usage when compared to the queue:listen command
总体来说,在 supervisor 中一般要加这个 option,可以节省 CPU 使用。
--quiet
不输出任何内容
--delay=3
一个任务失败后,延迟多长时间后再重试,单位是秒。这个值的设定我个人建议不要太短,因为一个任务失败(比如网络原因),重试时间太短可能会出现连续失败的情况。
--sleep=3
去 Redis 中拿任务的时候,发现没有任务,休息多长时间,单位是秒。这个值的设定要看你的任务是否紧急,如果是那种非常紧急的任务,不能等待太长时间。
--tries=3
定义失败任务最多重试次数。这个值的设定根据任务的重要程度来确定,一般 3 次比较适合。
创建任务
生成任务类
在你的应用程序中,队列的任务类都默认放在 app/Jobs 目录下。如果这个目录不存在,那当你运行 make:job Artisan 命令时目录就会被自动创建。你可以用以下的 Artisan 命令来生成一个新的队列任务:
php artisan make:job Demo
生成的类实现了 Illuminate\Contracts\Queue\ShouldQueue 接口,这意味着这个任务将会被推送到队列中,而不是同步执行。
<?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; use Illuminate\Support\Facades\Log; class Demo implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public $param; /** * Create a new job instance. * * @return void */ public function __construct($param = '') { $this->param = $param; } /** * Execute the job. * * @return void */ public function handle() { Log::info('Hello, '.$this->param); } }
内容版权声明:除非注明,否则皆为本站原创文章。