feat: 优化扫描性能,防止睡死
This commit is contained in:
parent
6c6995d2dd
commit
0eb4da3bcd
|
|
@ -49,6 +49,7 @@ func (s *Scanner) scanLoop() {
|
||||||
|
|
||||||
func (s *Scanner) performScan() {
|
func (s *Scanner) performScan() {
|
||||||
log.Println("[扫描器] 开始新一轮全盘扫描")
|
log.Println("[扫描器] 开始新一轮全盘扫描")
|
||||||
|
fileCount := 0
|
||||||
|
|
||||||
for _, root := range s.scanPaths {
|
for _, root := range s.scanPaths {
|
||||||
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
|
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
|
||||||
|
|
@ -60,10 +61,15 @@ func (s *Scanner) performScan() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Printf("[扫描器] 访问错误: %v", err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
s.checkCPUAndSleep()
|
fileCount++
|
||||||
|
|
||||||
|
if fileCount%100 == 0 {
|
||||||
|
s.checkCPUAndSleep()
|
||||||
|
}
|
||||||
|
|
||||||
if info.IsDir() {
|
if info.IsDir() {
|
||||||
if s.wlManager.IsPathIgnored(path) {
|
if s.wlManager.IsPathIgnored(path) {
|
||||||
|
|
@ -96,7 +102,7 @@ func (s *Scanner) performScan() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Scanner) checkCPUAndSleep() {
|
func (s *Scanner) checkCPUAndSleep() {
|
||||||
percent, err := cpu.Percent(time.Second, false)
|
percent, err := cpu.Percent(200*time.Millisecond, false)
|
||||||
if err != nil || len(percent) == 0 {
|
if err != nil || len(percent) == 0 {
|
||||||
log.Printf("[扫描器] 获取CPU使用率失败: %v", err)
|
log.Printf("[扫描器] 获取CPU使用率失败: %v", err)
|
||||||
return
|
return
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user