【问题标题】:Laravel Queue Job Running ImmediatelyLaravel 队列作业立即运行
【发布时间】:2017-12-02 16:20:48
【问题描述】:

我有一个数据库的 laravel 队列设置。当我运行dd(env('QUEUE_DRIVER')) 时,我得到database 回来。当我创建工作时,它会立即运行。我希望在运行php artisan queue:work 之前将作业排队。我需要做什么才能让工作不立即运行。谢谢!

编辑 1:

调度代码:

for ($i=0; $i < 100; $i++) { 
        $job = new UpdateJob("");
        dispatch($job);
}

职位代码:

public function handle(){
    sleep(30);
    SlackApi::SendMessage("Job!");
}

当我运行它时,我每 30 秒收到一条松弛消息。但是这些作业都没有存储在数据库中。

编辑 2:

即使我将-&gt;delay(Carbon::now()-&gt;addMinutes(10)) 添加到作业中,作业仍然会立即运行。

【问题讨论】:

  • 当您将作业放入队列时,它会尽快运行。当您必须执行许多任务时为目的而创建的作业功能,因此它们在队列中排队并会一一执行。或许这篇文章可以帮到你:laracasts.com/discuss/channels/laravel/…
  • 向我展示你在哪里分配工作的代码行
  • @vietnguyen09 查看编辑
  • 您没有运行queue:work,但仍然看到新记录插入到您的数据库中?
  • 我没有运行队列:工作刚刚完成。而且我在数据库中看不到任何东西。

标签: laravel queue


【解决方案1】:

问题似乎来自从 v5.1 升级到 v5.4 我在 app.php 中将 Illuminate\Bus\BusServiceProvider::class 添加到我的提供程序,这解决了所有问题。

【讨论】:

    【解决方案2】:

    是否有主管在运行?如果主管已配置,则队列将在添加到队列时将其作为儿子处理。如果您想要延迟调度作业,您必须指定延迟。查看https://laravel.com/docs/5.4/queues#delayed-dispatching了解更多详情

    【讨论】:

      猜你喜欢
      • 2022-08-20
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      • 2017-01-14
      • 2015-09-14
      • 2019-11-28
      • 2017-11-20
      • 2016-09-01
      相关资源
      最近更新 更多