【问题标题】:scheduling a laravel command调度 laravel 命令
【发布时间】:2019-09-02 02:51:22
【问题描述】:

不久前,我为一家公司构建了一个应用程序,现在他们希望对其进行一些修改。该应用程序的基础是用于医疗保健研讨会和咨询的 RSVP 系统。他们现在希望每天向所有研讨会/咨询时间在 24 小时内的客户发送电子邮件和短信提醒。因此,我创建了代码来提取 24 小时内发生的所有研讨会/咨询。我知道我需要在他们的服务器上设置一个 CRON 作业,这没什么大不了的,但是您将如何进行调度?我最好创建 2 个新命令(一个用于研讨会,一个用于咨询)并使用 Kernel.php 文件中的 $schedule->command('some:newCommand --force)->dailyAt(2:00); ,还是只使用 $schedule->command('queue:work --force)->dailyAt(2:00); 。我只是想了解最佳/最有效的做法。

【问题讨论】:

  • 这最终取决于您。我喜欢让我的命令做一件事;如果发送研讨会通知使用与发送咨询通知相同的代码,我会将其作为一项任务。如果它们是完全不同的代码,我会执行两个命令。
  • 您为什么要考虑使用queue:work?它用于运行排队作业,并且应该在长期(认为:永久)进程中运行。
  • 好吧,可能需要发送 0-200 封电子邮件/文本。所以我想我很好奇你将如何分派工作和/或事件/听众?我的意思是对我来说有意义的是获取我的数据,然后循环遍历并在循环的每次迭代中调度作业。这是最佳做法吗?

标签: laravel cron task schedule


【解决方案1】:

只要我的 2 美分...

  1. 改用 $schedule->job(...)
  2. 将 que:work 置于受监督的过程中
  3. schedule->job 将找出所有需要发送的消息,并为每个消息传输执行 1 个作业。因此,一项创造更多工作的工作。
  4. 使用 failed_jobs 表来跟踪是否有人没有收到消息。

【讨论】:

  • 所以你的意思是我应该做一份主要工作,然后从那个工作中,为每个客户分派次要工作(电子邮件/文本)?
  • 是的,这正是我要做的——因为我想看看失败的工作。
猜你喜欢
  • 2016-07-10
  • 2016-03-04
  • 1970-01-01
  • 2021-10-14
  • 2017-10-21
  • 2016-11-29
  • 2015-08-09
  • 2022-08-10
  • 2021-01-17
相关资源
最近更新 更多