db->close(); $lock_key = RedisKeyEnum::suffix('lock_hi_bei_send_'); $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['airdrop_time']) continue; //判断时间 $airdrop_time = strtotime(date('Y-m-d '.$setting['airdrop_time'])); if($airdrop_time > time()) continue; //今天是否执行过 $check_key = 'mall_airdrop_'.$mall_id; $ttl = strtotime(date('Y-m-d',strtotime('+1 day'))) - time(); $check = $redis->set($check_key,1,'NX','EX',$ttl); if(!$check) continue; HiBeiLogic::airdrop($mall_id); } 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; } } }