道歉,如果答案很简单,但我的大脑今天似乎无法解决这个问题,我希望有人不得不解决类似问题。
因此,在我的数据库中,我有各种带时间戳的记录。
在时间戳之前的10分钟内,我想执行一个操作并将结果存储在一个字段中。
我很清楚,如果我只是垂直存储这些记录,这很容易解决,因为我希望在数据库中有额外的字段tenminutes
nineminutes
等 - 我知道这可能是糟糕的数据库设计,但ssshhh,就这样吧!
好的,所以我的(伪)代码在这一刻读得有点像这样:
// In a command that is executed every minute using the scheduler....
$current = Carbon::now();
foreach ($things as $thing) {
if ($thing->thingStartTime->diffInMinutes($current) <= -10) {
//Get data
//Update table field `tenminutes`
}
if ($thing->thingStartTime->diffInMinutes($current) <= -9) {
//Get data
//Update table field `nineminutes`
}
}
你能看出这会变得多么可怕吗?
我正在思考一个关联数组的行,循环遍历它,并且有一种'tenminutes' => 10
事情正在发生?
或者是否有一种更有趣的方法来使用我不知道的carbon
?有什么想法吗?
其他信息,这是每分钟执行的一个cron作业!因此,如果我可以使用Laravels调度程序来熟悉这一点,那就太棒了!
答案 0 :(得分:1)
您可以迭代这些项目并调度具有不同延迟的作业吗?
$current = Carbon::now();
foreach ($things as $thing) {
$delayTime = $current - $thing->thingStartTime;
$job = (new SendReminderEmail($user))->delay($delayTime);
$this->dispatch($job);
}
还有更多文档here。