laravel - Laravel 调度队列总是在中间运行
问题描述
我正在尝试将 Laravel 中的作业分派到 mysql 中。如果我做
调度(新发送广播短信());
或者
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=数据库
解决方案
QUEUE_DRIVER
不是您应该在.env
文件中设置的属性。
正确的属性是QUEUE_CONNECTION
。
QUEUE_CONNECTION=database
推荐阅读
- php - 在PHPSpreadsheet中垂直和水平居中文本
- winforms - 用于 WinForms 组件的 Nullable 属性的 NullableConverter
- rest - Java 控制器未收到来自 Postman 的 PUT 请求
- c++ - 将音频源元素动态链接到 gstreamer audiomixer 元素中
- node.js - Google Analytics 中的跳出率是如何计算的?
- excel - 使用宏从Excel中不区分大小写的单元格中删除重复项
- android - 应用程序被杀后,我从 onLocationChanged 服务获得相同的位置
- javascript - 从 REACT 的下拉列表中提取选定的值
- wordpress - WordPress:如何更改管理类别列表中每页的帖子
- sql - SQL中连接的多列中的单列