【问题标题】:How do I time delay a job in Laravel 5.2?如何在 Laravel 5.2 中延迟工作?
【发布时间】:2017-01-27 17:16:16
【问题描述】:

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

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

我应该将计划任务排队吗?这里的问题是我认为 Laravel 和 cron 只能为您提供最接近分钟的调度精度(12:01 或 12:02,但不是 12:01:35)。

【问题讨论】:

  • 提交作业到队列“延迟调度”怎么样?

标签: php laravel-5 cron queue


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢!这正是我所需要的。不知道我是如何在文档中错过的。
  • 我知道这个问题已有 5 年历史了,但由于它是相关的,而且它是搜索引擎的第一个结果,有没有办法将任务延迟到设定的时间?
  • @万家不也是这样吗?如果您计算设定日期和现在之间的时间差,您可以使用相同的延迟功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
  • 2012-01-27
  • 2022-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多