我的用户表中有列pulls,它是整数列,我需要将该列的值重置为0每个月的第一天。
我想知道使用jobsor的最佳选择是schedules什么,为什么?
所以,你问你应该使用工作还是日程安排?我对吗?
如果这是您的问题,那么我会建议您明确有关工作和日程安排的概念。它们不是替代品。
工作
作业可以执行作业/任务/操作。
时间表
时间表除了运行作业之外什么都不做。
如何解决您的问题?
所以,做你想做的事。首先,您需要创建一个工作。php artisan make:job ResetUserPulls您可以使用命令创建作业,其中ResetUserPulls作业类的名称。现在,您需要在handle该工作的方法内进行操作。
现在您可以在console/Kernel.php文件的schedule()方法中安排作业,如下所示:
$schedule->job(new ResetUserPulls)-> monthlyOn(1');
有关更多说明,请参见此处:https ://laravel.com/docs/5.8/scheduling
最后,您必须运行一个 cron 作业来运行计划,如下所示:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
如果您需要每分钟/小时/月等做某事......您需要一个计划任务。通常,可以使用文件中可用实例的monthly()或monthlyOn()方法在每个月的第一天执行某些操作。\Illuminate\Console\Scheduling\Scheduleapp/Console/Kernel.php
由于计划任务可以是作业、命令甚至是闭包,因此您的问题的答案可能是“您可以在计划任务中使用作业”。
如果您需要在命令行中执行此任务,命令 ( php artisan make:command) 是合适的。如果您需要在应用程序内的不同位置执行此作业,那么php artisan make:job您可能需要一个作业 ( )。
这一切都取决于您的需求。无论您将逻辑放在哪里,都需要一个计划任务(https://laravel.com/docs/5.8/scheduling)。