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