package main import ( codegrpc "analysiscode" "fmt" "io/ioutil" mgo "mongodb" "os" qu "qfw/util" "regexp" "spider" //"qfw/util/redis" "runtime" . "spiderutil" "time" "github.com/donnie4w/go-logger/logger" "github.com/go-xweb/xweb" ) var timeReg = regexp.MustCompile("[0-9]{4}-[0-9]{2}-[0-9]{2}") func init() { qu.ReadConfig(&Config) //mgo spider.MgoE = &mgo.MongodbSim{ MongodbAddr: Config.Mongodb_spider, Size: Config.Editor_dbsize, DbName: "editor", } spider.MgoE.InitPool() spider.MgoS = &mgo.MongodbSim{ MongodbAddr: Config.Mongodb_spider, Size: Config.Spider_dbsize, DbName: "spider", } spider.MgoS.InitPool() //初始化Redis InitRedis(Config.Redisservers) //启动消息服务 spider.InitMsgClient(Config.Msgserveraddr, Config.Msgname) spider.InitMsgClientFile(Config.MsgserveraddrFile, Config.Msgname+"file") //验证码识别client codegrpc.InitCodeGrpcClient() //初始化网络存储服务 OssInit( qu.ObjToString(Config.OssInfo["ossEndpoint"]), qu.ObjToString(Config.OssInfo["ossAccessKeyId"]), qu.ObjToString(Config.OssInfo["ossAccessKeySecret"]), qu.ObjToString(Config.OssInfo["ossBucketName"]), ) //logger.SetConsole(false) logger.SetRollingDaily("./logs", "spider.log") //加载爬虫 spider.InitLuaCode() } // func main() { //定时清理日志 go clearLogs() //初始化爬虫服务 go spider.InitSpider() //清理计数 go spider.GcCount() //内存信息 go heapprint() //查列表页信息采集三级页 go spider.DetailData() //定时任务(现在此任务由编辑器建任务时完成) //go spider.TimeTask() //批量保存错误数据 go spider.UpdataErrDataMgo() logger.Debug(Config.Webport) xweb.Run(":" + Config.Webport) } func heapprint() { var m runtime.MemStats runtime.ReadMemStats(&m) fmt.Printf("申请内存:%dM,分配内存:%dM,未使用内存:%dM,回收内存:%dM\n", m.HeapSys/(1024*1024), m.HeapAlloc/(1024*1024), m.HeapIdle/(1024*1024), m.HeapReleased/(1024*1024)) time.AfterFunc(1*time.Minute, heapprint) } func clearLogs() { fmt.Println("=======clearLogs========") timeInt := time.Now().AddDate(0, 0, -30).Unix() dirs, err := ioutil.ReadDir("./logs") if err == nil { for _, f := range dirs { fname := f.Name() logTimeStr := timeReg.FindString(fname) if logTimeStr == "" { continue } logTimeInt, _ := time.ParseInLocation("2006-01-02", logTimeStr, time.Local) if logTimeInt.Unix() < timeInt { os.Remove("./logs/" + fname) } } } time.AfterFunc(24*time.Hour, clearLogs) }