首先官方文档
- 队列:https://learnku.com/docs/laravel/5.8/queues/3923
- 任务调度:https://learnku.com/docs/laravel/5.8/scheduling/3924
总结配置方法
方法一:artisan 命令,增加—tries 或者 —timeout
php artisan queue:listen --tries=3 //失败任务尝试3次
php artisan queue:listen --timeout=60 //每个任务运行最大时间不超过60秒
方法二:在 Job 控制器,任务类中加入变量定义(优先级高
)
<?php
/**
* 任务最大尝试次数。
*
* @var int
*/
public $tries = 3;
/**
* 任务运行的超时时间。
*
* @var int
*/
public $timeout = 180;
研究这个的背景
laravel 一般默认会配置运行时间的,有的可能不会,不管会不会吧!
有的配置的太短,会导致需要很长时间才能完成的任务永远都失败
。
还有的没有配置,会导致出现假死的任务永远卡在进程里
综上,你需要合理配置 Job 的运行时间来避免这些问题。但是很多朋友可能并没有好好看手册,就不知道如何使用(比如我),这也是我发这篇文章的目的,让你很快的知道如何配置
最后加个温馨提示
也没啥,就是学会善用 laravel 内置的 tinker
,命令行下运行
php artisan tinker
Psy Shell v0.7.2 (PHP 7.3.7 — cli) by Justin Hileman
$id = App\Models\Info::find(1);$obj = new App\Jobs\Info\UpdatetimeJob($id);$obj->handle();
//这样我们就可以简单执行这个job啦~开发调错就比较简单
🐶 你走,我不送你。你来,风雨无阻,我去接你。