laravel-5.4 - __construct() 方法调用但 handle() 函数未在 laravel 作业中调用
问题描述
我正在尝试通过dispatch()
使用方法执行作业
- 拉拉维尔 5.4
- redis 服务器
- 导师
我已经完成了queue
类似的配置'default' => env('QUEUE_DRIVER', 'redis')
。
- 我在我的
app/Services
文件中调用 dispatch() 方法
调度(新的 SavePropertyImages($pid_list));
以下是我的工作文件
app/Jobs
:namespace App\Jobs; use App\Property; use App\Services\CreaBase; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; class SavePropertyImages implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; protected $pid; protected $creaBase; public $timeout = 300; public $tries = 1; /** * Create a new job instance. * * @return void */ public function __construct($pid) { $this->pid = $pid; } /** * Execute the job. * * @return void */ public function handle() { $this->creaBase = new CreaBase(); if (!$this->creaBase->isLogin){ $this->creaBase->init(); } $this->creaBase->saveAllImages("Property", $this->pid); } }
当我调用一个dispatch(new SavePropertyImages($pid_list))
方法时,作业的__construct()
方法调用,但它不调用handle()
函数。
你有什么想法?
解决方案
宾果游戏,我得到了答案
我的handle()
函数没有调用。因为我设置了一个supervisor
但没有启动supervisor
进程,这就是为什么我的queue:work redis
进程没有启动,我的工作没有分配给redis
服务器,我的工作没有执行。
首先我开始我的supervisor
服务并且我的queue
工作正常。
推荐阅读
- error-handling - Gerrit 错误说无法检查权限
- spring-boot - 无法将两个 Neo4j 实例与 Spring boot/Spring 数据 neo4j 一起使用
- c# - 使用 ReactiveUI 禁用和启用文本字段更改上的按钮
- c++ - 如何检查 cmake 正在使用什么编译器?
- c++ - sscanf 在 MSVC++ 15+ 中是否发生了变化?
- c# - 使用 FileUpload 控件在 asp.net c# 中获取文件的完整路径
- javascript - 暂停后的 Youtube Javascript API 回调
- bash - 为什么 Bash 陷阱不捕获未定义变量的退出状态?
- css - 删除子元素上的 CSS 过滤器
- postgresql - 使用列值构建查询