Laravel Jobs和Queues无法正常工作

问题描述

我正在创建一个生成视频的应用程序。这是一个非常密集的功能,需要几分钟才能生成。所以我想为此创建一个异步过程。经过一些研究,我了解了Laravel中的Jobs和Queues。

但是现在我的工作没有插入jobs表中。我找不到我做错了什么。

我开始工作的功能

public function generate() {
    $id = Auth::user()->id;
    GenerateJob::dispatch($id);
}

我的工作

<?PHP

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

use Auth;

class GenerateJob implements ShouldQueue
{
    use dispatchable,InteractsWithQueue,Queueable,SerializesModels;

    public function __construct($dossierId)
    {
        $this->dossierId = $dossierId;
    }

    public function handle()
    {
        sleep(5);
    }
}

.ENV QUEUE_DRIVER=database

我确实跑过PHP artisan clear:config,但似乎无济于事。

我尝试的所有方法似乎都无效。 jobs表保持为空,并且作业同步执行,而不是异步执行。我在这里想念什么?

解决方法

经过数小时的调试,我终于找到了解决问题的方法。将->onConnection('database');添加到GenerateJob::dispatch($dossier_id);可以解决所有问题。

我希望我能说出为什么这样做是必要的,但是由于我已经把它放在我的.env文件中,所以我不知道。希望这对这种情况下的其他人有所帮助。 :-)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...