_percentHandle($percent); $dbArr = ['db']; foreach($dbArr as $key=>$dbName){ $db = \Yii::$app->get($dbName, false); $dbTables = $db->getSchema()->getTableNames(); $tableCount = count($dbTables); foreach($dbTables as $tableName){ $db->getSchema()->generateTableSchema($tableName); $percent += 1/$tableCount * 100; $this->_percentHandle($percent); } } $this->_percentHandle($percent, true); echo ' 生成表缓存完成'.PHP_EOL; } /** * 生成百分比箭头文字 * @param $percent * @param bool $isDone */ private function _percentHandle($percent, $isDone = false){ $percent = intval($percent); if($percent >= 100) $percent = 100; $beforeStr = str_repeat('=', intval($percent/2)); $afterStr = str_repeat(' ', 50 - intval($percent/2)); if($percent >= 100){ $echoString = "\r[=".$beforeStr.$afterStr.'] '.$percent.'% '; } else { $echoString = "\r[".$beforeStr.'>'.$afterStr.'] '.$percent.'% '; } echo $echoString; flush(); if($percent >= 100 && $isDone){ echo PHP_EOL; } } /** * 清空缓存 */ public function actionClearCache() { \Yii::$app->tokenRedis->flushdb(); \Yii::$app->redis->flushdb(); \Yii::$app->cache->flush(); echo '清空成功'.PHP_EOL; } /** * 清空缓存 */ public function actionClearConfigCache() { \Yii::$app->cache->delete(Cache::SYSTEM_CONFIG_KEY); echo '清空成功: ' . Cache::SYSTEM_CONFIG_KEY . PHP_EOL; } /** * 重置接点和推荐数量 */ public function actionResetConNum(){ // 先清空会员表内的所有con_num数据 UserInfo::updateAll(['CON_NUM'=>0, 'REC_NUM'=>0], '1=1'); // 循环所有会员,给他的上级数量增加1 $this->_loopUserAddConNum(); echo ' 重置接点推荐数量完成'.PHP_EOL; } /** * 循环为上级增加数量 * @param int $offset */ public function _loopUserAddConNum($offset = 0){ $userData = UserInfo::find()->select('USER_ID,CON_UID,REC_UID')->where('1=1')->orderBy('CREATED_AT ASC')->offset($offset)->limit(100)->asArray()->all(); $totalNum = UserInfo::find()->count(); $startNum = $offset; if($userData){ foreach($userData as $user){ if($user['CON_UID']){ UserInfo::updateAll(['CON_NUM'=>new Expression('CON_NUM+1')], 'USER_ID=:USER_ID', [':USER_ID'=>$user['CON_UID']]); } if($user['REC_UID']){ UserInfo::updateAll(['REC_NUM'=>new Expression('REC_NUM+1')], 'USER_ID=:USER_ID', [':USER_ID'=>$user['REC_UID']]); } $this->_percentHandle($startNum + 1/$totalNum*100); } $this->_loopUserAddConNum($offset + 100); } } /** * 清网络缓存 */ public function actionClearNet(){ \Yii::$app->redis->del(Cache::USER_NETWORK_PARENTS); \Yii::$app->redis->del(Cache::USER_RELATION_PARENTS); } /** * 自动送钉钉提醒 */ public function actionAutoSendDingTalkFrontend() { $ip = 'https://ng-frontend-api.elken.com'; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $ip . '/v1/site/send-notice'); curl_setopt($curl, CURLOPT_TIMEOUT, 5000); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $res = curl_exec($curl); if ($res) { curl_close($curl); } else { $error = curl_errno($curl); curl_close($curl); } } /** * 自动送钉钉提醒 */ public function actionAutoSendDingTalkBackend() { $ip = 'https://ng-backend-api.elken.com'; // Prod $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $ip . '/v1/site/send-notice'); curl_setopt($curl, CURLOPT_TIMEOUT, 5000); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $res = curl_exec($curl); if ($res) { curl_close($curl); } else { $error = curl_errno($curl); curl_close($curl); } } }