仅在特定时间运行laravel作业一次



我遇到了一种情况,我想在特定时间触发一些代码,即当用户进行预订时,自由职业者必须接受/拒绝预订请求,如果他不接受,那么在x个持续时间(比如说15*分钟(后,它将被拒绝,用户将收到推送通知。所有的代码都完成了,但目前我在每1分钟后运行一个cronjob,它会检查是否有任何未响应的预订,并检查他们的时间(15分钟,动态(何时过去,所以我在之后执行我的代码,我想这不好,因为它的运行数据库每分钟都在重复。

我也知道laravel队列作业,但没有看到任何东西让我只在特定时间内运行该作业(即在15分钟后执行该作业,如果没有响应,则拒绝它(

您查看过队列延迟吗?

https://laravel.com/docs/9.x/queues#delayed-调度

这听起来像你想要的,我只会在他们预订时触发队列并延迟,这样它就会在15分钟后执行。

使用计划任务。

use AppConsoleCommandsSendEmailsCommand;

$schedule->command('emails:send Taylor --force')->daily();

$schedule->command(SendEmailsCommand::class, ['Taylor', '--force'])->daily();

https://laravel.com/docs/9.x/scheduling#scheduling-artisan命令

最新更新