0

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

但是现在我的工作没有被插入到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保持为空,作业同步执行而不是异步执行。我在这里想念什么?

4

1 回答 1

0

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

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

于 2020-08-11T17:01:00.957 回答