diff --git a/src/service/host_manage.go b/src/service/host_manage.go index d60d69e1d7998b9c96b1b36034b57ad7c7cc8ff2..4a3f508448bb6b2a0f871d8b72c339dd3347b06e 100644 --- a/src/service/host_manage.go +++ b/src/service/host_manage.go @@ -462,7 +462,7 @@ func (h *HostManageSvc) ListStateHostManage(req request.StateHostManageReq) (err fail := make([]int, 0) for i := 0; i < len(hostManageList); i++ { go func(i int) { - //修改状态 + //检测ip连通性 connStatus := StatusDetection(hostManageList[i].Ip) if connStatus == 1 { lock.Lock() @@ -587,13 +587,27 @@ func (h *HostManageSvc) SaveStateHostManage(hostManageList []request.HostManageL return } - //状态检测 + // 使用协程批量执行 ping 命令 + var wg sync.WaitGroup + wg.Add(len(hostManageListCaches)) id = uuid.New().String() - for k, v := range hostManageListCaches { - //调用状态检测函数 - hostManageListCaches[k].ConnStatus = StatusDetection(v.Ip) - hostManageListCaches[k].Id = id + for i := 0; i < len(hostManageListCaches); i++ { + go func(i int) { + //检测ip连通性 + hostManageListCaches[i].ConnStatus = StatusDetection(hostManageListCaches[i].Ip) + hostManageListCaches[i].Id = id + defer wg.Done() + }(i) } + wg.Wait() + + //状态检测 + //id = uuid.New().String() + //for k, v := range hostManageListCaches { + // //调用状态检测函数 + // hostManageListCaches[k].ConnStatus = StatusDetection(v.Ip) + // hostManageListCaches[k].Id = id + //} //存入数据库 _, err = db.Table("host_manage_list_cache").Insert(&hostManageListCaches)