我有一个数据库表,它将被不断更新。
game_id | end_time
现在我如何创建一个在这个end_time
上运行的作业,一个作业将从第三方API获得一些数据,这将依赖于这个game_id
。
注意: game_id和end_time从每个记录中都有变化。
我已经查找了任务调度程序,但我找不到信息,我认为这只是一个特定的时间。
发布于 2020-02-21 19:04:05
是的,您可以使用laravel调度器来执行此任务。您可以查看console命令类中的时间变量。例如,放入内核类:
$schedule->command('ApiConnection:get')->everyFiveMinutes();
在ApiConnection类(handle()函数)中,您可以获得DB记录:
Model::whereDate('end_time', '>=', Carbon::today())->get(); //format of Carbon function should be equal to your end_time column format, I mean I don't know if you use just date or date with time, etc
现在您应该能够按时间使用game_id数据了。
我还建议在DB表中添加status列,这样您就可以控制已经处理的记录,如下所示:
$models = Model::whereDate('end_time', '>=', Carbon::today())->where('status', 'awaiting')->get();
foreach ($models as $model) {
$model->status = 'in progress';
...your api work here...
$model->status = 'completed';
}
https://stackoverflow.com/questions/60237490
复制相似问题