@@ -25,6 +25,7 @@ import (
25
25
"github.com/lifei6671/mindoc/models"
26
26
"github.com/lifei6671/mindoc/utils/filetil"
27
27
"github.com/astaxie/beego/cache/redis"
28
+ "github.com/howeyc/fsnotify"
28
29
)
29
30
30
31
// RegisterDataBase 注册数据库
@@ -55,6 +56,7 @@ func RegisterDataBase() {
55
56
beego .Error ("注册默认数据库失败->" , err )
56
57
os .Exit (1 )
57
58
}
59
+
58
60
} else if strings .EqualFold (adapter , "sqlite3" ) {
59
61
60
62
database := beego .AppConfig .String ("db_database" )
@@ -401,37 +403,37 @@ func RegisterCache() {
401
403
//自动加载配置文件.修改了监听端口号和数据库配置无法自动生效.
402
404
func RegisterAutoLoadConfig () {
403
405
if conf .AutoLoadDelay > 0 {
404
- ticker := time .NewTicker (time .Second * time .Duration (conf .AutoLoadDelay ))
405
406
407
+ watcher , err := fsnotify .NewWatcher ()
408
+
409
+ if err != nil {
410
+ beego .Error ("创建配置文件监控器失败 ->" ,err )
411
+ }
406
412
go func () {
407
- f ,err := os .Stat (conf .ConfigurationFile )
408
- if err != nil {
409
- beego .Error ("读取配置文件时出错 ->" ,err )
410
- return
411
- }
412
- modTime := f .ModTime ()
413
413
for {
414
414
select {
415
- case <- ticker .C :
416
- f ,err := os .Stat (conf .ConfigurationFile )
417
- if err != nil {
418
- beego .Error ("读取配置文件时出错 ->" ,err )
419
- break
420
- }
421
- if modTime != f .ModTime () {
415
+ case ev := <- watcher .Event :
416
+ //如果是修改了配置文件
417
+ if ev .IsModify () {
422
418
if err := beego .LoadAppConfig ("ini" , conf .ConfigurationFile ); err != nil {
423
419
beego .Error ("An error occurred ->" , err )
424
420
break
425
421
}
426
- modTime = f .ModTime ()
427
422
RegisterCache ()
428
-
429
423
RegisterLogger ("" )
430
- beego .Info ("配置文件已加载" )
424
+ beego .Info ("配置文件已加载 ->" , conf . ConfigurationFile )
431
425
}
426
+ case err := <- watcher .Error :
427
+ beego .Error ("配置文件监控器错误 ->" , err )
432
428
}
433
429
}
434
430
}()
431
+
432
+ err = watcher .Watch (conf .ConfigurationFile )
433
+
434
+ if err != nil {
435
+ beego .Error ("监控配置文件失败 ->" ,err )
436
+ }
435
437
}
436
438
}
437
439
0 commit comments