Laravel:schedule-> call()-> daily()有什么区别?和时间表->作业()->每日()?

时间:2019-03-19 11:16:12

标签: laravel

打电话给我会发生什么变化

schedule->call(function() { .. do something ... })->daily()

如果我打电话

schedule->job(... my job class where handle do the same things... )->daily() 

4 个答案:

答案 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原则编写简洁的代码将在几乎每种情况下要求使用单独的类选项。