我正在尝试将Laravel中的作业分派到mysql中。如果我愿意
dispatch(新的SendBroadcastSMS());
或
SendBroadcastSMS :: dispatch()-> delay(now()-> addMinutes(2));
作业始终处于中间状态。在我的工作中,我设置为睡眠30秒,而当前调用调派的控制器/页面也要等待30秒,然后回显作业返回。为什么?它应该通过工作者在后台运行,对吗?还是我对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
表中的任何行
QUEUE_DRIVER =数据库
答案 0 :(得分:0)
QUEUE_DRIVER
不是您应在.env
文件中设置的属性。
正确的属性是QUEUE_CONNECTION
。
QUEUE_CONNECTION=database