【发布时间】:2017-01-01 06:39:35
【问题描述】:
我目前正在尝试为我的应用程序中的特定功能制定最佳逻辑。
考虑一下:
- 在数据库中创建了一条记录
- 5 小时后,该记录被删除。除非自创建以来已更新,在这种情况下,删除将在
updated_at时间后 5 小时发生
我非常熟悉 Laravel 队列和 cron 作业等,我已经简要了解了 Laravel 任务计划程序,但我真正苦苦挣扎的是它应该如何工作的逻辑......
这是我目前的算法(我知道这不是最好的解决方案):
- 在数据库中创建记录
- 在创建记录 4 小时 55 分钟后为此特定记录安排了一项任务(这样做的目的是向用户发送通知,警告他们他们的记录即将被删除)
- 当任务执行时,它会检索记录并确保记录没有被更新。如果它已更新,它会将任务重置为从
updated_at时间戳开始的 4 小时 55 分钟。如果尚未更新,它将在 5 分钟后再次运行相同的任务,在最终删除记录之前再次测试时间戳。 - 一旦记录被删除,任务也会被删除
我对上述解决方案的担忧是,数据库中可能有大量记录,因此这将导致计划中的任务量非常大,这可能不是最好的主意...
谁能提出比上述更好的逻辑?
请注意,我不需要为我编写代码,我只是在寻求逻辑方面的帮助
【问题讨论】:
标签: php laravel cron queue scheduled-tasks