【发布时间】:2019-08-13 14:54:05
【问题描述】:
我将尝试解释我想要实现的目标。我正在用 MySQL 编写 laravel json api。想象一下用户在我的数据库中创建记录。我想做的是在创建此记录后 24 小时执行某种操作。这有点像 cron 工作,但最好的解决方案是什么?例如,我是否应该每 5 分钟运行一次 cron 并检查任何记录是否已过期 24 小时?或者也许有更好的解决方案?
【问题讨论】:
我将尝试解释我想要实现的目标。我正在用 MySQL 编写 laravel json api。想象一下用户在我的数据库中创建记录。我想做的是在创建此记录后 24 小时执行某种操作。这有点像 cron 工作,但最好的解决方案是什么?例如,我是否应该每 5 分钟运行一次 cron 并检查任何记录是否已过期 24 小时?或者也许有更好的解决方案?
【问题讨论】:
cron 很好,但是(mysql)数据库有events,可以调度。在我看来,这真的取决于你的个人品味,因此在这里或多或少是题外话。我的意思是条目 24 小时后的更新是一条 SQL 语句,它应该相当快,除非你有数百万个条目;)
【讨论】:
您应该为此使用Laravel queue system。当您在数据库中插入一条记录时,您应该创建一个新的delayed job。将延迟设置为 24 小时,Laravel 将在那一刻执行作业。
AfterInsertJob::dispatch()->delay(now()->addHours(24));
【讨论】: