我正在使用Laravel的工匠调度程序来管理应用程序的cron作业。这个应用程序的一个功能是虚拟商店,以一个记录在数据库中的间隔“重新进货”(即stock_min = 5
和stock_max = 15
意味着商店将每隔5-15分钟重新进货一次)。这些值可以随时改变。
我如何在Laravel中设置cron,以便它能够遵循给定的足够随机性的间隔,并查看自上次补货以来间隔是否发生了变化?
答案 0 :(得分:1)
您需要创建一个名为'stock_update_tracking'的模型或类似的模型,以便在下次重新库存时记录。
stock_update_tracking
next_update
然后,您可以每分钟调用一个cron作业,只需检查next_update值是否超过当前时间戳。
$schedule->call(function() {
$nextUpdate = DB::table('stock_update_tracking')
->select('next_update')
->where('next_update', '<' Carbon::now())
->count();
if($nextUpdate) {
// Update the stock
// Calculate a new next update time
$newNextUpdate = Carbon::now();
$newNextUpdate = $newNextUpdate->addMinutes(rand(5,15));
// Save the newNextUpdate value in the stock_update_tracking table
DB::table('stock_update_tracking')->update(['next_update' => $newNextUpdate])
}
})->everyMinute()->withoutOverlapping()