打电话给我会发生什么变化
schedule->call(function() { .. do something ... })->daily()
如果我打电话
schedule->job(... my job class where handle do the same things... )->daily()
?
答案 0 :(得分:1)
几乎是同一回事。
set
要求您创建一个作业类并在其中添加逻辑。这是一种调度作业的简便方法,而无需您自己编写执行代码。
在$schedule->job()
中,您可以直接在回调中执行任何操作。这样就无需为简单的操作创建作业类。
答案 1 :(得分:1)
job()
作业方法可用于安排排队的作业。这个方法 提供了一种方便的方式来计划作业而无需使用呼叫 手动创建“关闭”以使作业排队的方法。
源:https://laravel.com/docs/5.8/scheduling#scheduling-queued-jobs
基本上,对您来说没有太大的区别。但是在调用方法中编写复杂的代码很容易变得混乱。
答案 2 :(得分:1)
[(ngModel)]="startingDate"
方法专门用于向队列添加Laravel job(即实现job()
接口的类)。 Illuminate\Contracts\Queue\ShouldQueue
方法将在计划的时间同步运行call()
或invokable object ,而Closure
方法会将给定的作业添加到在预定时间排队。然后,队列工作者将在作业到达队列的最前面(可能不是立即执行)时对其进行处理。
job()
基本上是以下操作的快捷方式:
$schedule->job(new Heartbeat)->everyFiveMinutes();
答案 3 :(得分:0)
主要区别在于,一个代码是内联代码,另一个代码将其分离到自己的类中。
如果代码非常简短,易读且上下文相关,则in-line选项是合适的。
如果代码超过几行,则使用单独的类选项是合适的。
通常,按照SOLID原则编写简洁的代码将在几乎每种情况下要求使用单独的类选项。