Golang 配置檔案熱載入

2021-10-01 15:49:56 字數 1087 閱讀 5009

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...