我如何在Laravel 5.2时间延迟工作


How do I time delay a job in Laravel 5.2?

假设我的服务器在12:00:05向5个客户端设备发送相同的请求。我想等待90秒(直到12:01:35),然后检查哪些客户端对请求做出了适当的响应,并做一些其他的事情。完成这样的事情的最好方法是什么?

我是否应该排队作业并在开始时使用sleep(90) ?问题是这种类型的作业总是需要至少90秒才能完成,并且服务器默认设置为60秒后超时。我想我可以更改服务器设置,但如果我的其他任务超过60秒,则仍应视为超时。

我应该把一个计划任务排队吗?这里的问题是我认为Laravel和cron只能给你调度精度到最近的一分钟(12:01或12:02,而不是12:01:35)。

你可以在Laravel中使用延迟调度。https://laravel.com/docs/master/queues delayed-dispatching

$job = (new YourEvent($coolEvent))->delay(Carbon::now()->addSeconds(90));

这将在任务添加到队列后90秒运行任务。