feat: 优化扫描性能,防止睡死

This commit is contained in:
wuko233 2026-02-17 10:13:39 +08:00
parent 6c6995d2dd
commit 0eb4da3bcd

View File

@ -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
} }
fileCount++
if fileCount%100 == 0 {
s.checkCPUAndSleep() 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