Laravel 调度队列总是在中间 运行

Laravel dispatch queue always intermediately run

我正在尝试将 Laravel 中的作业分派到 mysql 中。如果我这样做

dispatch(new SendBroadcastSMS());

SendBroadcastSMS::dispatch()->delay(now()->addMinutes(2));

这项工作总是 运行 中间。在我的工作中,我设置为休眠 30 秒,我当前调用调度的 controller/page 也等待 30 秒并回显作业 return。为什么?它应该 运行 在后台通过 worker 对吗?或者我误解了 laravel 队列?

我的工作如下:

<?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;

class SendBroadcastSMS implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function __construct()
    {
    }
    public function handle()
    {
        sleep(30);
        echo "test";
//       dd($this->sendSms("6281517777767","test message"));
        //
    }
}

我的队列驱动程序是数据库 mysql 我也没有在 job table

中收到任何行

QUEUE_DRIVER=database

QUEUE_DRIVER 不是您应该在 .env 文件中设置的 属性。
正确的 属性 是 QUEUE_CONNECTION.

QUEUE_CONNECTION=database