public function actionAdd($task_id) { $task_id = Yii::$app->request->queryParams['task_id']; $svr_pool_array = array(); $query = DcmdTaskServicePool::find()->andWhere(['task_id' => $task_id])->asArray()->all(); foreach ($query as $item) { $svr_pool_array[$item['svr_pool_id']] = $item['svr_pool']; } if (Yii::$app->request->post() && array_key_exists('selection', Yii::$app->request->post())) { $ret_msg = ""; $query = DcmdCenter::findOne(['master' => 1]); if ($query) { list($host, $port) = explode(':', $query["host"]); var_dump(Yii::$app->request->post()); ///exit; $task_id = Yii::$app->request->post()['task_id']; $select = Yii::$app->request->post()['selection']; foreach ($select as $k => $v) { list($ip, $svr_pool_id) = explode(',', $v); $reply = execTaskCmd($host, $port, $task_id, Yii::$app->user->getId(), 6, NULL, $ip, NULL, $svr_pool_array[$svr_pool_id]); if ($reply->getState() == 0) { $ret_msg .= $ip . ":添加成功 "; } else { $ret_msg .= $ip . ":添加失败:" . $reply->getErr() . " "; } } } else { $ret_msg = "添加失败:无法获取Center!"; } Yii::$app->getSession()->setFlash('success', $ret_msg); } ///echo "==="; ////var_dump(Yii::$app->request->queryParams); ///获取已经存在池子及对应的ip $query = DcmdTaskNode::find()->andWhere(['task_id' => $task_id])->asArray()->all(); $exist_svr_pool_ip = array(); foreach ($query as $item) { if (array_key_exists($item['svr_pool'], $exist_svr_pool_ip)) { array_push($exist_svr_pool_ip[$item['svr_pool']], $item['ip']); } else { $exist_svr_pool_ip[$item['svr_pool']] = array($item['ip']); } } ///限制服务池子 $query_con = "(1 = 0)"; if (array_key_exists('DcmdServicePoolNodeSearch', Yii::$app->request->queryParams) && array_key_exists('svr_pool_id', Yii::$app->request->queryParams['DcmdServicePoolNodeSearch']) && Yii::$app->request->queryParams['DcmdServicePoolNodeSearch']['svr_pool_id'] != '') { $query_con .= " or (svr_pool_id = " . $Yii::$app->request->queryParams['DcmdServicePoolNodeSearch']['svr_pool_id'] . " and ip not in (0"; ///排除该服务池子对应的ip $svr_pool = $svr_pool_array($Yii::$app->request->queryParams['DcmdServicePoolNodeSearch']['svr_pool_id']); if (array_key_exists($svr_pool, $exist_svr_pool_ip)) { foreach ($exist_svr_pool_ip[$svr_pool] as $ip) { $query_con .= ",'" . $ip . "'"; } } $query_con .= "))"; } else { foreach ($svr_pool_array as $svr_pool_id => $svr_pool) { $query_con .= " or (svr_pool_id = " . $svr_pool_id . " and ip not in (0"; if (array_key_exists($svr_pool, $exist_svr_pool_ip)) { foreach ($exist_svr_pool_ip[$svr_pool] as $ip) { $query_con .= ",'" . $ip . "'"; } } $query_con .= "))"; } } ///echo $query_con;exit; ///排除已经存在的ip $query = DcmdServicePoolNode::find()->where($query_con); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 50]]); $searchModel = new DcmdServicePoolNodeSearch(); $searchModel->load(Yii::$app->request->queryParams); return $this->render('add', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'task_id' => $task_id, 'svr_pool' => $svr_pool_array]); }