|
@@ -15,17 +15,19 @@ import (
|
|
)
|
|
)
|
|
|
|
|
|
var (
|
|
var (
|
|
- Webport string
|
|
|
|
- Config map[string]interface{}
|
|
|
|
- Mgo *mongodb.MongodbSim
|
|
|
|
- Coll string //ocr_flie_over
|
|
|
|
- MoveCollFile string //bidding_file
|
|
|
|
- MoveCollNomal string //bidding_nomal
|
|
|
|
- Api string
|
|
|
|
- To string
|
|
|
|
- TaskTime int
|
|
|
|
- SaveMgoCache = make(chan map[string]interface{}, 1000) //
|
|
|
|
- SP = make(chan bool, 5)
|
|
|
|
|
|
+ Webport string
|
|
|
|
+ Config map[string]interface{}
|
|
|
|
+ Mgo *mongodb.MongodbSim
|
|
|
|
+ Coll string //ocr_flie_over
|
|
|
|
+ MoveCollFile string //bidding_file
|
|
|
|
+ MoveCollNomal string //bidding_nomal
|
|
|
|
+ Api string
|
|
|
|
+ To string
|
|
|
|
+ TaskTime int
|
|
|
|
+ SaveMgoCache = make(chan map[string]interface{}, 1000) //
|
|
|
|
+ SaveRepeatDbCache = make(chan map[string]interface{}, 1000)
|
|
|
|
+ SP = make(chan bool, 5)
|
|
|
|
+ SP_Repeat = make(chan bool, 5)
|
|
//StartId string
|
|
//StartId string
|
|
Stop bool
|
|
Stop bool
|
|
NewIdLock = &sync.Mutex{}
|
|
NewIdLock = &sync.Mutex{}
|
|
@@ -51,6 +53,8 @@ func init() {
|
|
Password: qu.ObjToString(Config["password"]),
|
|
Password: qu.ObjToString(Config["password"]),
|
|
}
|
|
}
|
|
Mgo.InitPool()
|
|
Mgo.InitPool()
|
|
|
|
+ //DbRepeatAddr
|
|
|
|
+ DbRepeatAddr = qu.ObjToString(Config["dbrepeat"])
|
|
}
|
|
}
|
|
func main() {
|
|
func main() {
|
|
qu.Debug("start...")
|
|
qu.Debug("start...")
|
|
@@ -59,12 +63,14 @@ func main() {
|
|
c.AddFunc("0 0 0 ? * *", DeleteData)
|
|
c.AddFunc("0 0 0 ? * *", DeleteData)
|
|
go monitor()
|
|
go monitor()
|
|
go SaveData() //数据保存
|
|
go SaveData() //数据保存
|
|
|
|
+ go SaveRepeatData() //重复数据保存
|
|
go FileDataMoveToBidding() //附件数据迁移至bidding
|
|
go FileDataMoveToBidding() //附件数据迁移至bidding
|
|
go NormalDataMoveToBidding() //正常数据迁移至bidding
|
|
go NormalDataMoveToBidding() //正常数据迁移至bidding
|
|
//xweb.Run(":" + Webport)
|
|
//xweb.Run(":" + Webport)
|
|
ch := make(chan bool, 1)
|
|
ch := make(chan bool, 1)
|
|
<-ch
|
|
<-ch
|
|
}
|
|
}
|
|
|
|
+
|
|
func monitor() {
|
|
func monitor() {
|
|
//最好是单实例调用
|
|
//最好是单实例调用
|
|
http.HandleFunc("/movebidding/stop", func(w http.ResponseWriter, r *http.Request) {
|
|
http.HandleFunc("/movebidding/stop", func(w http.ResponseWriter, r *http.Request) {
|
|
@@ -135,40 +141,68 @@ func NormalDataMove(query map[string]interface{}) {
|
|
_id := tmp["_id"]
|
|
_id := tmp["_id"]
|
|
update := []map[string]interface{}{}
|
|
update := []map[string]interface{}{}
|
|
update = append(update, map[string]interface{}{"_id": _id})
|
|
update = append(update, map[string]interface{}{"_id": _id})
|
|
- NewIdLock.Lock()
|
|
|
|
- newId := primitive.NewObjectID()
|
|
|
|
- NewIdLock.Unlock()
|
|
|
|
- tmp["_id"] = newId
|
|
|
|
- tmp["pre_id"] = mongodb.BsonIdToSId(_id)
|
|
|
|
- strNewId := newId.Hex()
|
|
|
|
- if competehref := qu.ObjToString(tmp["competehref"]); competehref != "" && competehref != "#" { //根据id重新生成href
|
|
|
|
- tmp["href"] = `https://www.jianyu360.cn/article/content/` + qu.CommonEncodeArticle("content", strNewId) + `.html`
|
|
|
|
- }
|
|
|
|
- detail := qu.ObjToString(tmp["detail"])
|
|
|
|
- //补充html标签,更新记录
|
|
|
|
- result, ok, _ := repairHtml(detail)
|
|
|
|
- //更新
|
|
|
|
- set := map[string]interface{}{"moveok": true}
|
|
|
|
- set["biddingid"] = strNewId
|
|
|
|
- if ok && result != "" {
|
|
|
|
- set["detail_update"] = result
|
|
|
|
- tmp["detail"] = result
|
|
|
|
|
|
+ site := qu.ObjToString(tmp["site"])
|
|
|
|
+ s_sha := qu.ObjToString(tmp["s_sha"])
|
|
|
|
+ var repeat bool
|
|
|
|
+ if qu.IntAll(tmp["extracttype"]) == -1 { //站内判重
|
|
|
|
+ repeat = CheckStr("sha", site+s_sha)
|
|
}
|
|
}
|
|
- //oss存储
|
|
|
|
- objectName := fmt.Sprintf("%s%s", strNewId, ".txt")
|
|
|
|
- detailStream := []byte(qu.ObjToString(tmp["detail"]))
|
|
|
|
- rep := ossutil.UpLoadByRestful(Oss_Address, Detail_BucketId, objectName, detailStream, true)
|
|
|
|
- if rep.Error_msg != UploadSuccess {
|
|
|
|
- qu.Debug("正文上传失败:", _id, strNewId)
|
|
|
|
- }
|
|
|
|
- htmlStream := []byte(qu.ObjToString(tmp["contenthtml"]))
|
|
|
|
- rep = ossutil.UpLoadByRestful(Oss_Address, Html_BucketId, objectName, htmlStream, true)
|
|
|
|
- if rep.Error_msg != UploadSuccess {
|
|
|
|
- qu.Debug("源码上传失败:", _id, strNewId)
|
|
|
|
|
|
+ if repeat {
|
|
|
|
+ update = append(update, map[string]interface{}{
|
|
|
|
+ "$set": map[string]interface{}{
|
|
|
|
+ "moveok": false,
|
|
|
|
+ },
|
|
|
|
+ })
|
|
|
|
+ SaveRepeatDbCache <- tmp
|
|
|
|
+ } else {
|
|
|
|
+ NewIdLock.Lock()
|
|
|
|
+ newId := primitive.NewObjectID()
|
|
|
|
+ NewIdLock.Unlock()
|
|
|
|
+ tmp["_id"] = newId
|
|
|
|
+ tmp["pre_id"] = mongodb.BsonIdToSId(_id)
|
|
|
|
+ strNewId := newId.Hex()
|
|
|
|
+ AddStr("sha", site+s_sha, strNewId)
|
|
|
|
+ //更新
|
|
|
|
+ set := map[string]interface{}{
|
|
|
|
+ "moveok": true,
|
|
|
|
+ "biddingid": strNewId,
|
|
|
|
+ }
|
|
|
|
+ if competehref := qu.ObjToString(tmp["competehref"]); competehref != "" && competehref != "#" { //根据id重新生成href
|
|
|
|
+ tmp["href"] = `https://www.jianyu360.cn/article/content/` + qu.CommonEncodeArticle("content", strNewId) + `.html`
|
|
|
|
+ }
|
|
|
|
+ detail := qu.ObjToString(tmp["detail"])
|
|
|
|
+ //补充html标签,更新记录
|
|
|
|
+ result, ok, _ := repairHtml(detail)
|
|
|
|
+ if ok && result != "" {
|
|
|
|
+ set["detail_update"] = result
|
|
|
|
+ tmp["detail"] = result
|
|
|
|
+ }
|
|
|
|
+ //oss存储
|
|
|
|
+ objectName := fmt.Sprintf("%s%s", strNewId, ".txt")
|
|
|
|
+ detailStream := []byte(qu.ObjToString(tmp["detail"]))
|
|
|
|
+ detailArgs := &ossutil.UploadArgs{
|
|
|
|
+ BucketID: Detail_BucketId,
|
|
|
|
+ ObjectName: objectName,
|
|
|
|
+ Stream: detailStream,
|
|
|
|
+ }
|
|
|
|
+ rep := ossutil.UpLoadByRestful(Oss_Address, detailArgs)
|
|
|
|
+ if rep.Error_msg != ossutil.UploadSuccess {
|
|
|
|
+ qu.Debug("正文上传失败:", _id, strNewId)
|
|
|
|
+ }
|
|
|
|
+ htmlStream := []byte(qu.ObjToString(tmp["contenthtml"]))
|
|
|
|
+ contenthtmlArgs := &ossutil.UploadArgs{
|
|
|
|
+ BucketID: Html_BucketId,
|
|
|
|
+ ObjectName: objectName,
|
|
|
|
+ Stream: htmlStream,
|
|
|
|
+ }
|
|
|
|
+ rep = ossutil.UpLoadByRestful(Oss_Address, contenthtmlArgs)
|
|
|
|
+ if rep.Error_msg != ossutil.UploadSuccess {
|
|
|
|
+ qu.Debug("源码上传失败:", _id, strNewId)
|
|
|
|
+ }
|
|
|
|
+ update = append(update, map[string]interface{}{
|
|
|
|
+ "$set": set,
|
|
|
|
+ })
|
|
}
|
|
}
|
|
- update = append(update, map[string]interface{}{
|
|
|
|
- "$set": set,
|
|
|
|
- })
|
|
|
|
//save
|
|
//save
|
|
SaveMgoCache <- tmp
|
|
SaveMgoCache <- tmp
|
|
lock.Lock()
|
|
lock.Lock()
|
|
@@ -255,74 +289,102 @@ func FileDataMove(query map[string]interface{}) {
|
|
_id := tmp["_id"]
|
|
_id := tmp["_id"]
|
|
update := []map[string]interface{}{}
|
|
update := []map[string]interface{}{}
|
|
update = append(update, map[string]interface{}{"_id": _id})
|
|
update = append(update, map[string]interface{}{"_id": _id})
|
|
- NewIdLock.Lock()
|
|
|
|
- newId := primitive.NewObjectID()
|
|
|
|
- NewIdLock.Unlock()
|
|
|
|
- tmp["_id"] = newId //新id
|
|
|
|
- tmp["pre_id"] = mongodb.BsonIdToSId(_id)
|
|
|
|
- strNewId := newId.Hex()
|
|
|
|
- if competehref := qu.ObjToString(tmp["competehref"]); competehref != "" && competehref != "#" { //根据id重新生成href
|
|
|
|
- tmp["href"] = `https://www.jianyu360.cn/article/content/` + qu.CommonEncodeArticle("content", strNewId) + `.html`
|
|
|
|
|
|
+ site := qu.ObjToString(tmp["site"])
|
|
|
|
+ s_sha := qu.ObjToString(tmp["s_sha"])
|
|
|
|
+ var repeat bool
|
|
|
|
+ if qu.IntAll(tmp["extracttype"]) == -1 { //站内判重
|
|
|
|
+ repeat = CheckStr("sha", site+s_sha)
|
|
}
|
|
}
|
|
- //更新
|
|
|
|
- set := map[string]interface{}{"moveok": true}
|
|
|
|
- set["biddingid"] = strNewId
|
|
|
|
- site := qu.ObjToString(tmp["site"]) //解析附件站点
|
|
|
|
- var replace bool
|
|
|
|
- var filetext string
|
|
|
|
- if limitRatio := OssSite[site]; limitRatio > 0 { //配置站点解析附件,根据准确率情况替换正文
|
|
|
|
- replace, filetext = AnalysisFile(true, limitRatio, tmp)
|
|
|
|
- if replace { //替换正文
|
|
|
|
- tmp["detail"] = filetext
|
|
|
|
- set["filetext"] = true
|
|
|
|
|
|
+ if repeat { //重复数据不进行迁移
|
|
|
|
+ update = append(update, map[string]interface{}{
|
|
|
|
+ "$set": map[string]interface{}{
|
|
|
|
+ "moveok": false,
|
|
|
|
+ },
|
|
|
|
+ })
|
|
|
|
+ SaveRepeatDbCache <- tmp
|
|
|
|
+ } else {
|
|
|
|
+ NewIdLock.Lock()
|
|
|
|
+ newId := primitive.NewObjectID()
|
|
|
|
+ NewIdLock.Unlock()
|
|
|
|
+ tmp["_id"] = newId //新id
|
|
|
|
+ tmp["pre_id"] = mongodb.BsonIdToSId(_id)
|
|
|
|
+ strNewId := newId.Hex()
|
|
|
|
+ AddStr("sha", site+s_sha, strNewId) //db存储
|
|
|
|
+ if competehref := qu.ObjToString(tmp["competehref"]); competehref != "" && competehref != "#" { //根据id重新生成href
|
|
|
|
+ tmp["href"] = `https://www.jianyu360.cn/article/content/` + qu.CommonEncodeArticle("content", strNewId) + `.html`
|
|
}
|
|
}
|
|
- } else { //其它网站附件信息,detail无效,只有一个附件且不是ocr识别的,替换正文
|
|
|
|
- //判断detail是否有效
|
|
|
|
- detail := qu.ObjToString(tmp["detail"])
|
|
|
|
- detail = sp.FilterDetail(detail) //只保留文本内容
|
|
|
|
- if len([]rune(detail)) <= 5 || (len([]rune(detail)) <= 50 && SpecialTextReg.MatchString(detail)) {
|
|
|
|
- replace, filetext = AnalysisFile(false, 0, tmp)
|
|
|
|
|
|
+ //更新
|
|
|
|
+ set := map[string]interface{}{
|
|
|
|
+ "moveok": true,
|
|
|
|
+ "biddingid": strNewId,
|
|
|
|
+ }
|
|
|
|
+ var replace bool
|
|
|
|
+ var filetext string
|
|
|
|
+ if limitRatio := OssSite[site]; limitRatio > 0 { //配置站点解析附件,根据准确率情况替换正文
|
|
|
|
+ replace, filetext = AnalysisFile(true, limitRatio, tmp)
|
|
if replace { //替换正文
|
|
if replace { //替换正文
|
|
tmp["detail"] = filetext
|
|
tmp["detail"] = filetext
|
|
set["filetext"] = true
|
|
set["filetext"] = true
|
|
}
|
|
}
|
|
|
|
+ } else { //其它网站附件信息,detail无效,只有一个附件且不是ocr识别的,替换正文
|
|
|
|
+ //判断detail是否有效
|
|
|
|
+ detail := qu.ObjToString(tmp["detail"])
|
|
|
|
+ detail = sp.FilterDetail(detail) //只保留文本内容
|
|
|
|
+ if len([]rune(detail)) <= 5 || (len([]rune(detail)) <= 50 && SpecialTextReg.MatchString(detail)) {
|
|
|
|
+ replace, filetext = AnalysisFile(false, 0, tmp)
|
|
|
|
+ if replace { //替换正文
|
|
|
|
+ tmp["detail"] = filetext
|
|
|
|
+ set["filetext"] = true
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
- //未用附件内容替换detail的数据,补充html标签,更新记录
|
|
|
|
- if !replace {
|
|
|
|
- detail := qu.ObjToString(tmp["detail"])
|
|
|
|
- result, ok, _ := repairHtml(detail)
|
|
|
|
- if ok && result != "" {
|
|
|
|
- set["detail_update"] = result
|
|
|
|
- tmp["detail"] = result
|
|
|
|
|
|
+ //未用附件内容替换detail的数据,补充html标签,更新记录
|
|
|
|
+ if !replace {
|
|
|
|
+ detail := qu.ObjToString(tmp["detail"])
|
|
|
|
+ result, ok, _ := repairHtml(detail)
|
|
|
|
+ if ok && result != "" {
|
|
|
|
+ set["detail_update"] = result
|
|
|
|
+ tmp["detail"] = result
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ //oss存储
|
|
|
|
+ objectName := fmt.Sprintf("%s%s", strNewId, ".txt")
|
|
|
|
+ detailStream := []byte(qu.ObjToString(tmp["detail"]))
|
|
|
|
+ detailArgs := &ossutil.UploadArgs{
|
|
|
|
+ BucketID: Detail_BucketId,
|
|
|
|
+ ObjectName: objectName,
|
|
|
|
+ Stream: detailStream,
|
|
|
|
+ }
|
|
|
|
+ rep := ossutil.UpLoadByRestful(Oss_Address, detailArgs)
|
|
|
|
+ if rep.Error_msg != ossutil.UploadSuccess {
|
|
|
|
+ qu.Debug("正文上传失败:", _id, strNewId)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ htmlStream := []byte(qu.ObjToString(tmp["contenthtml"]))
|
|
|
|
+ contenthtmlArgs := &ossutil.UploadArgs{
|
|
|
|
+ BucketID: Html_BucketId,
|
|
|
|
+ ObjectName: objectName,
|
|
|
|
+ Stream: htmlStream,
|
|
|
|
+ }
|
|
|
|
+ rep = ossutil.UpLoadByRestful(Oss_Address, contenthtmlArgs)
|
|
|
|
+ if rep.Error_msg != ossutil.UploadSuccess {
|
|
|
|
+ qu.Debug("源码上传失败:", _id, strNewId)
|
|
|
|
+ }
|
|
|
|
+ //IsReplaceDetailSite := OssSite[site]
|
|
|
|
+ //if IsReplaceDetailSite {
|
|
|
|
+ // replace, fileOk, filetext := AnalysisFile_back(IsReplaceDetailSite, tmp) //解析附件是否替换到detail
|
|
|
|
+ // if replace {
|
|
|
|
+ // tmp["detail"] = filetext //替换正文
|
|
|
|
+ // }
|
|
|
|
+ // if !fileOk { //附件异常
|
|
|
|
+ // set["filerr"] = true
|
|
|
|
+ // //set["filetext"] = filetext//文本过大,导致更新mongo失败
|
|
|
|
+ // }
|
|
|
|
+ //}
|
|
|
|
+ update = append(update, map[string]interface{}{
|
|
|
|
+ "$set": set,
|
|
|
|
+ })
|
|
}
|
|
}
|
|
- //oss存储
|
|
|
|
- objectName := fmt.Sprintf("%s%s", strNewId, ".txt")
|
|
|
|
- detailStream := []byte(qu.ObjToString(tmp["detail"]))
|
|
|
|
- rep := ossutil.UpLoadByRestful(Oss_Address, Detail_BucketId, objectName, detailStream, true)
|
|
|
|
- if rep.Error_msg != UploadSuccess {
|
|
|
|
- qu.Debug("正文上传失败:", _id, strNewId)
|
|
|
|
- }
|
|
|
|
- htmlStream := []byte(qu.ObjToString(tmp["contenthtml"]))
|
|
|
|
- rep = ossutil.UpLoadByRestful(Oss_Address, Html_BucketId, objectName, htmlStream, true)
|
|
|
|
- if rep.Error_msg != UploadSuccess {
|
|
|
|
- qu.Debug("源码上传失败:", _id, strNewId)
|
|
|
|
- }
|
|
|
|
- //IsReplaceDetailSite := OssSite[site]
|
|
|
|
- //if IsReplaceDetailSite {
|
|
|
|
- // replace, fileOk, filetext := AnalysisFile_back(IsReplaceDetailSite, tmp) //解析附件是否替换到detail
|
|
|
|
- // if replace {
|
|
|
|
- // tmp["detail"] = filetext //替换正文
|
|
|
|
- // }
|
|
|
|
- // if !fileOk { //附件异常
|
|
|
|
- // set["filerr"] = true
|
|
|
|
- // //set["filetext"] = filetext//文本过大,导致更新mongo失败
|
|
|
|
- // }
|
|
|
|
- //}
|
|
|
|
- update = append(update, map[string]interface{}{
|
|
|
|
- "$set": set,
|
|
|
|
- })
|
|
|
|
//save
|
|
//save
|
|
SaveMgoCache <- tmp
|
|
SaveMgoCache <- tmp
|
|
lock.Lock()
|
|
lock.Lock()
|
|
@@ -369,7 +431,7 @@ func SaveData() {
|
|
savearr = make([]map[string]interface{}, 20)
|
|
savearr = make([]map[string]interface{}, 20)
|
|
indexh = 0
|
|
indexh = 0
|
|
}
|
|
}
|
|
- case <-time.After(5 * time.Second): //超过10秒开始保存
|
|
|
|
|
|
+ case <-time.After(5 * time.Second): //超过5秒开始保存
|
|
qu.Debug("定时保存数据...", indexh)
|
|
qu.Debug("定时保存数据...", indexh)
|
|
if indexh > 0 {
|
|
if indexh > 0 {
|
|
SP <- true
|
|
SP <- true
|
|
@@ -386,17 +448,126 @@ func SaveData() {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func SaveRepeatData() {
|
|
|
|
+ fmt.Println("Save Repeat Data...")
|
|
|
|
+ repeatArr := make([]map[string]interface{}, 20)
|
|
|
|
+ repeatIndexh := 0
|
|
|
|
+ for {
|
|
|
|
+ select {
|
|
|
|
+ case v := <-SaveRepeatDbCache:
|
|
|
|
+ repeatArr[repeatIndexh] = v
|
|
|
|
+ repeatIndexh++
|
|
|
|
+ if repeatIndexh == 20 { //超过20条开始保存
|
|
|
|
+ SP_Repeat <- true
|
|
|
|
+ go func(repeatArr []map[string]interface{}) {
|
|
|
|
+ defer func() {
|
|
|
|
+ <-SP_Repeat
|
|
|
|
+ }()
|
|
|
|
+ Mgo.SaveBulk("bidding_db_repeat", repeatArr...)
|
|
|
|
+ }(repeatArr)
|
|
|
|
+ repeatArr = make([]map[string]interface{}, 20)
|
|
|
|
+ repeatIndexh = 0
|
|
|
|
+ }
|
|
|
|
+ case <-time.After(30 * time.Second): //超过30秒开始保存
|
|
|
|
+ qu.Debug("定时保存数据...", repeatIndexh)
|
|
|
|
+ if repeatIndexh > 0 {
|
|
|
|
+ SP_Repeat <- true
|
|
|
|
+ go func(repeatArr []map[string]interface{}) {
|
|
|
|
+ defer func() {
|
|
|
|
+ <-SP_Repeat
|
|
|
|
+ }()
|
|
|
|
+ Mgo.SaveBulk("bidding_db_repeat", repeatArr...)
|
|
|
|
+ }(repeatArr[:repeatIndexh])
|
|
|
|
+ repeatArr = make([]map[string]interface{}, 20)
|
|
|
|
+ repeatIndexh = 0
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
func DeleteData() {
|
|
func DeleteData() {
|
|
|
|
+ endTime := time.Now().AddDate(0, -1, 0).Unix()
|
|
query := map[string]interface{}{
|
|
query := map[string]interface{}{
|
|
"comeintime": map[string]interface{}{
|
|
"comeintime": map[string]interface{}{
|
|
- "$lt": time.Now().AddDate(0, -1, 0).Unix(),
|
|
|
|
|
|
+ "$lt": endTime,
|
|
|
|
+ },
|
|
|
|
+ "moveok": map[string]interface{}{
|
|
|
|
+ "$exists": true,
|
|
},
|
|
},
|
|
- "moveok": true,
|
|
|
|
}
|
|
}
|
|
|
|
+ //删除db
|
|
|
|
+ DeleteBiddingNomalDB(query)
|
|
|
|
+ DeleteBiddingFileDB(query)
|
|
|
|
+ //删除表数据
|
|
n := Mgo.Delete(MoveCollFile, query)
|
|
n := Mgo.Delete(MoveCollFile, query)
|
|
n1 := Mgo.Delete(MoveCollNomal, query)
|
|
n1 := Mgo.Delete(MoveCollNomal, query)
|
|
qu.Debug("bidding_file删除数据量:", n, " bidding_nomal删除数据量:", n1)
|
|
qu.Debug("bidding_file删除数据量:", n, " bidding_nomal删除数据量:", n1)
|
|
}
|
|
}
|
|
|
|
+func DeleteBiddingNomalDB(query map[string]interface{}) {
|
|
|
|
+ sess := Mgo.GetMgoConn()
|
|
|
|
+ defer Mgo.DestoryMongoConn(sess)
|
|
|
|
+ fields := map[string]interface{}{
|
|
|
|
+ "site": 1,
|
|
|
|
+ "s_sha": 1,
|
|
|
|
+ "biddingid": 1,
|
|
|
|
+ }
|
|
|
|
+ ch := make(chan bool, 10)
|
|
|
|
+ wg := sync.WaitGroup{}
|
|
|
|
+ it := sess.DB("qfw").C(MoveCollNomal).Find(&query).Select(&fields).Iter()
|
|
|
|
+ n := 0
|
|
|
|
+ for tmp := make(map[string]interface{}); it.Next(tmp); n++ {
|
|
|
|
+ ch <- true
|
|
|
|
+ wg.Add(1)
|
|
|
|
+ go func(tmp map[string]interface{}) {
|
|
|
|
+ defer func() {
|
|
|
|
+ <-ch
|
|
|
|
+ wg.Done()
|
|
|
|
+ }()
|
|
|
|
+ site := qu.ObjToString(tmp["site"])
|
|
|
|
+ s_sha := qu.ObjToString(tmp["s_sha"])
|
|
|
|
+ biddingid := qu.ObjToString(tmp["biddingid"])
|
|
|
|
+ RemoveStr("sha", site+s_sha, biddingid)
|
|
|
|
+ }(tmp)
|
|
|
|
+ if n%100 == 0 {
|
|
|
|
+ qu.Debug("current:", n)
|
|
|
|
+ }
|
|
|
|
+ tmp = map[string]interface{}{}
|
|
|
|
+ }
|
|
|
|
+ wg.Wait()
|
|
|
|
+ qu.Debug("bidding_nomal DB 已删除")
|
|
|
|
+}
|
|
|
|
+func DeleteBiddingFileDB(query map[string]interface{}) {
|
|
|
|
+ sess := Mgo.GetMgoConn()
|
|
|
|
+ defer Mgo.DestoryMongoConn(sess)
|
|
|
|
+ fields := map[string]interface{}{
|
|
|
|
+ "site": 1,
|
|
|
|
+ "s_sha": 1,
|
|
|
|
+ "biddingid": 1,
|
|
|
|
+ }
|
|
|
|
+ ch := make(chan bool, 10)
|
|
|
|
+ wg := sync.WaitGroup{}
|
|
|
|
+ it := sess.DB("qfw").C(MoveCollFile).Find(&query).Select(&fields).Iter()
|
|
|
|
+ n := 0
|
|
|
|
+ for tmp := make(map[string]interface{}); it.Next(tmp); n++ {
|
|
|
|
+ ch <- true
|
|
|
|
+ wg.Add(1)
|
|
|
|
+ go func(tmp map[string]interface{}) {
|
|
|
|
+ defer func() {
|
|
|
|
+ <-ch
|
|
|
|
+ wg.Done()
|
|
|
|
+ }()
|
|
|
|
+ site := qu.ObjToString(tmp["site"])
|
|
|
|
+ s_sha := qu.ObjToString(tmp["s_sha"])
|
|
|
|
+ biddingid := qu.ObjToString(tmp["biddingid"])
|
|
|
|
+ RemoveStr("sha", site+s_sha, biddingid)
|
|
|
|
+ }(tmp)
|
|
|
|
+ if n%100 == 0 {
|
|
|
|
+ qu.Debug("current:", n)
|
|
|
|
+ }
|
|
|
|
+ tmp = map[string]interface{}{}
|
|
|
|
+ }
|
|
|
|
+ wg.Wait()
|
|
|
|
+ qu.Debug("bidding_file DB 已删除")
|
|
|
|
+}
|
|
|
|
|
|
/*func DataMoveToBidding() {
|
|
/*func DataMoveToBidding() {
|
|
defer qu.Catch()
|
|
defer qu.Catch()
|