【问题标题】:How does Laravel handle multiple command tasks scheduled at the same time?Laravel 如何处理同时调度的多个命令任务?
【发布时间】:2018-11-05 01:02:25
【问题描述】:

这是我一直在考虑的事情。 Laravel 的任务调度器如何处理同时调度的多个任务?

假设我有 4 个不同的命令,每个命令都设置为在凌晨 1:15 执行:

$schedule->command('emails:send')->daily()->at('1:15');
$schedule->command('cache:maintenance')->daily()->at('1:15');
$schedule->command('users:remove-deleted')->daily()->at('1:15');
$schedule->command('users:notification-reminders')->daily()->at('1:15');

另外,为了论证,假设每个命令需要 2-5 分钟才能完成。 Laravel 轮询队列:每分钟工作一次,那么如果第一个命令还没有完成,那么在凌晨 1:16 会发生什么? Laravel 是否会自动将剩余的命令放入队列中,还是我必须为每个命令显式创建队列工作程序?

【问题讨论】:

  • 我不知道你的问题的细节,所以我会限制自己发表评论 - 但我会说如果你真的需要他们去在特定时间并且您知道时间会有变化,您可能最好使用常规的 cron 作业并在任务调度程序中只保留较少耗时的任务。

标签: laravel cron queue task scheduling


【解决方案1】:

如果您设置了一个包含多个驱动程序的队列,它们可以同时运行。大多数生产服务器可以轻松地同时处理许多任务。否则,它将它们添加到一个队列堆栈并按指定的顺序运行。

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 2016-03-04
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多