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
我正在尝试将 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