我有此数据库表,该表将不断更新。
game_id | end_time
现在我如何创建将在此end_time
上运行的作业,该作业将从第三方API获取一些数据,而该数据将依赖于此game_id
。
注意:game_id和end_time从每条记录更改。
我已经在任务计划程序上进行了查找,但是我找不到仅在特定时间使用的信息。
是的,您可以使用laravel Scheduler来完成此任务。您可以在控制台命令类中查看time变量。例如放入您的内核类:
$schedule->command('ApiConnection:get')->everyFiveMinutes();
并且在您的ApiConnection类(handle()函数)中,您可以获得数据库记录:
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数据了。
我还建议在数据库表中添加状态列,以便您可以控制已处理的记录,如下所示:
$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';
}