package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"sync"
"time"
)// config 用json配置測試
type config struct
var (
config *config
configlock = new(sync.rwmutex)
)func (config *config) reload()
defer f.close()
fileinfo, err := f.stat()
if err != nil
// 或取當前檔案修改時間
curmodifytime := fileinfo.modtime().unix()
if curmodifytime > getconfig().lastmodifytime
}() }}
func loadconfig() bool
//不同的配置規則,解析複雜度不同
temp := new(config)
err = json.unmarshal(f, &temp)
if err != nil
temp.filename = getconfig().filename
temp.lastmodifytime = getconfig().lastmodifytime
fmt.printf("now cfg:%#v\n", temp)
configlock.lock()
config = temp
configlock.unlock()
return true
}// getconfig ...
func getconfig() *config
func init()
//熱更新配置可能有多種觸發方式,這裡使用定時器實現
go config.reload()
}func main()
}
ProFTP如何熱載入配置檔案
參考 proftp配置好了,也可以使用了,但是有乙個重大問題,配置檔案變更了怎麼辦?停掉重新啟動當然可以,但是服務一旦正式使用,停止服務這種操作是不能輕易做的。網上多都是安裝和配置一類的文章,最後還是回到官網解決辦法。執行下面shell指令碼restart,進行配置rehash,這個操作不會關閉當前...
go configor配置檔案支援熱載入
在編寫go程式的時候我們載入配置有多中方式,比較常用的還是配置檔案。我們需要配置檔案能夠熱載入 當配置發生變化後 不用重新啟動程式,就能夠使配置生效。我們採用的是開源的配置檔案方式 好,下面上貨。無reload模式 configfilename fmt.printf config v r n con...
golang之熱載入Fresh
fresh 是乙個命令列工具,每次儲存go或模版檔案時,該工具都會生成或重新啟動web應用程式。fresh將監視檔案事件,並且每次建立 修改 刪除檔案時,fresh都會生成並重新啟動應用程式。如果go build返回錯誤,它會將記錄在tmp資料夾中。安裝 go get github.com pilu...