如何仅在特定时间戳执行一次功能,而不是定期运行?
这是我的申请: 我有一个2行的表:id(主键)和时间(epoch时间戳存储为整数)。现在,对于每个条目,我想调用一个函数,该函数将在存储在表中的时间戳处执行。我该如何实现这一目标?
还有更好的替代任务计划程序吗? 我使用的是Laravel 5.4(如果重要的话)
编辑:我确实知道一种解决方法,但我正在寻找最有效的解决方案。答案 0 :(得分:0)
概念是每分钟运行一次调度程序,然后选择该时间段内的记录。执行该功能。假设秒没有关系,我写了下面的代码。如果秒数很重要,您必须每秒检查如何运行调度程序,但概念是相同的。
希望这会对你有所帮助
use Carbon\Carbon;
...
$schedule->call(function() {
// Look in your table for `time` in current minute, between 0-59s
$entries = TheTable::where([
['time', '>=', Carbon::now()->second(0)->timestamp],
['time', '<=', Carbon::now()->second(59)->timestamp]
]);
// Loop through the results & call the function
})->everyMinute();