首页 > 解决方案 > __construct() 方法调用但 handle() 函数未在 laravel 作业中调用

问题描述

我正在尝试通过dispatch()使用方法执行作业

  1. 拉拉维尔 5.4
  2. redis 服务器
  3. 导师

我已经完成了queue类似的配置'default' => env('QUEUE_DRIVER', 'redis')

  1. 我在我的app/Services文件中调用 dispatch() 方法

调度(新的 SavePropertyImages($pid_list));

  1. 以下是我的工作文件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()函数。

你有什么想法?

标签: laravel-5.4supervisordredis-serverlaravel-jobs

解决方案


宾果游戏,我得到了答案

我的handle()函数没有调用。因为我设置了一个supervisor但没有启动supervisor进程,这就是为什么我的queue:work redis进程没有启动,我的工作没有分配给redis服务器,我的工作没有执行。

首先我开始我的supervisor服务并且我的queue工作正常。


推荐阅读