PHP (Laravel 5.4) - 一旦 post 达到特定年龄,更新数据库中的条目

PHP (Laravel 5.4) - As soon as a post hits a certain age, update entry in database

我只是需要一些关于如何处理这个问题的建议。

基本上,该应用程序包含一个竞价平台,用户可以在该平台上对商品进行竞价,直到 post 12 小时。然后 "post" 的状态设置为关闭,不再允许投标。所以,我的问题是:

不断寻找已存在 12 小时(需要在准确的秒关闭)的 post 并更新数据库的最佳方法是什么?一旦用户尝试加载它并执行检查,只更新 post 是否理想?

那是行不通的。

考虑您有一个项目需要在 23:30

过期的场景

如果您依赖用户来访问该项目,那么也有可能没有人会访问该项目并且它将保持这种状态。

Laravel 有一个强大的 Queue 系统,您可以在其中安排要执行的作业。例如,您可以在创建新项目后恰好 12 小时将作业安排到 运行。

所以这应该有效:

$job = (new ExpireItem($item))
                ->delay(Carbon::now()->addHours(12));

更多信息在 documentation