__construct()方法调用但在Laravel作业中未调用handle()函数

时间:2018-07-17 12:15:04

标签: laravel-5.4 supervisor redis-server laravel-jobs

我正在尝试使用

通过dispatch()方法执行作业
  1. laravel 5.4
  2. redis服务器
  3. 主管

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

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

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()函数。

您有什么想法吗?

1 个答案:

答案 0 :(得分:1)

宾果,我得到了答案

我的handle()函数没有调用。因为我设置了supervisor但没有启动supervisor进程,所以我的queue:work redis进程没有启动并且我的工作没有分配给redis服务器,并且我的工作没有执行的原因

首先,我启动supervisor服务,而我的queue正常运行。