db->close(); $lock_key = RedisKeyEnum::suffix('lock_hi_value_destory_'); $identification = uniqid(); if (!LockHelper::lock($lock_key, $identification, 60, 10)) throw new \Exception('嗨值销毁进入处理阶段,当前访问过多'); $mall_list = Mall::getEnableMallList(true); $mall_ids = array_column($mall_list, 'id'); if (empty($mall_ids)) { echo '没有可用商城,不做处理 ... ' . PHP_EOL; return ExitCode::UNSPECIFIED_ERROR; } $redis = \Yii::$app->redis; foreach ($mall_ids as $mall_id) { if (MallAddons::isInstall($mall_id, HiGoEnum::ADDONS_NAME) == 0) continue; $setting = \Yii::$app->services->setting->addons->get($mall_id, HiGoEnum::ADDONS_NAME, 'basic'); if(!$setting || !$setting['is_enable'] || !$setting['destroy_time']) continue; //判断时间 $destroy_time = strtotime(date('Y-m-d'.$setting['destroy_time'])); if($destroy_time > time()) continue; //今天是否执行过 $check_key = 'mall_hi_value_destroy_'.$mall_id; $check = $redis->set($check_key,1,'NX','EX',86400); if(!$check) continue; //destroy_formula : 嗨值销毁方式 HiValueLogic::destroy($mall_id,$setting['destroy_formula'],$setting['destroy_ratio']); } LockHelper::uLock($lock_key,$identification); return ExitCode::OK; } catch (\Exception $e) { echo '嗨值销毁,执行结束失败任务处理出错:' . $e->getMessage() . PHP_EOL; \Yii::error('嗨值销毁,执行结束失败任务处理出错:' . $e->getMessage()); \Yii::getLogger()->flush(true); return ExitCode::UNSPECIFIED_ERROR; } } }