task_start_at = config('sync.commodity_sync.task_start_at'); $this->task_end_at = config('sync.commodity_sync.task_end_at'); $this->restart = config('sync.commodity_sync.restart'); $this->is_enabled= config('sync.commodity_sync.enabled'); } /** * Execute the console command. */ public function handle() { $this->init(); if($this->is_enabled==false)return; sleep(rand(2,3)); $start_time = Cache::remember($this->task_start_at,null,function (){ return ValueStore::query()->firstOrCreate(['name'=>$this->task_start_at])->first()->value; }); $end_time = Cache::remember($this->task_end_at,null,function (){ return ValueStore::query()->firstOrCreate(['name'=>$this->task_end_at])->first()->value; }); $start = Carbon::now(); // 判断上一次任务异常了 //1.第一次就异常了 if(isset($start_time) && empty($end_time) && $start->diffInMinutes(Carbon::parse($start_time)) < $this->restart)return; //2.中间某次异常了 if(isset($start_time) && isset($end_time) && Carbon::parse($end_time)->lt(Carbon::parse($start_time)) && $start->diffInMinutes(Carbon::parse($start_time)) < $this->restart) return; $start = (string)$start; Cache::put($this->task_start_at,$start); ValueStore::query()->where('name',$this->task_start_at)->update(['value'=>$start]); $this->SyncWmsCommoditiesInformation(); $end = (string)Carbon::now(); Cache::put($this->task_end_at,$end); ValueStore::query()->where('name',$this->task_end_at)->update(['value'=>$end]); } public function SyncWmsCommoditiesInformation(){ /** @var CommodityService $commodityService */ $commodityService = app(CommodityService::class); $commodityService->syncCommodityCreated(); $commodityService->syncCommodityUpdated(); } }