Files
2026-05-20 16:13:58 +08:00

92 lines
3.2 KiB
Go

package botser
import (
"fmt"
"os"
"stat/common/redis"
"stat/common/utils"
"stat/common/version"
"stat/statg"
"strconv"
"sync"
"time"
)
var (
sysOnce sync.Once
)
func GetServerInformation() string {
text := fmt.Sprintf("统计中心:【%s】编号【%d】:\n", statg.Conf.ServerIndex.Name(), statg.Conf.ServerIndex)
text += fmt.Sprintf("机器名称:【%s】\n", version.HostName())
text += fmt.Sprintf("监听地址:【%s】\n", statg.Conf.Host)
text += fmt.Sprintf("监听端口:【%d】\n", statg.Conf.Port)
text += fmt.Sprintf("服务进程:【%d】\n", os.Getpid())
text += fmt.Sprintf("程序版本:【%s】\n", version.SERVICE_VERSION)
text += fmt.Sprintf("源码分支:【%s】\n", version.GIT_BRANCH)
text += fmt.Sprintf("提交版本:【%s】\n", version.GIT_VERSION)
text += fmt.Sprintf("编译日期:【%s】\n", version.BUILD_DATE)
text += fmt.Sprintf("编译地址:【%s】\n", version.BUILD_IP)
text += fmt.Sprintf("运行模式:【%s】\n", statg.Conf.RunMod)
text += fmt.Sprintf("启动时间:【%s】\n", version.ServerStartTime.Format("2006-01-02T15:04:05"))
text += fmt.Sprintf("运行时长:【%s】\n", time.Since(version.ServerStartTime))
return text
}
func SaveServerKeepAliveTime() {
defer utils.RecoverError(nil)
keyAlive := redis.GetServerKeepAliveHashKey(int(statg.Conf.ServerIndex))
_ = redis.StatRds.Set(keyAlive, time.Now().Unix(), 0)
}
func SaveServerNormalCloseFlag() {
defer utils.RecoverError(nil)
keyClose := redis.GetServerCloseFlagHashKey(int(statg.Conf.ServerIndex))
_ = redis.StatRds.Set(keyClose, time.Now().Unix(), 0)
}
func GetServerInformationLastTime() string {
ret := ""
srvStart := int64(0)
srvAlive := int64(0)
srvClose := int64(0)
sysOnce.Do(func() {
keyStart := redis.GetServerStartTimeHashKey(int(statg.Conf.ServerIndex))
if usStart, err := redis.StatRds.Get(keyStart); err == nil && usStart != nil {
if ut, err2 := strconv.ParseInt(*usStart, 10, 64); err2 == nil {
srvStart = ut
}
}
keyAlive := redis.GetServerKeepAliveHashKey(int(statg.Conf.ServerIndex))
if usAlive, err := redis.StatRds.Get(keyAlive); err == nil && usAlive != nil {
if ut, err2 := strconv.ParseInt(*usAlive, 10, 64); err2 == nil {
srvAlive = ut
}
}
keyClose := redis.GetServerCloseFlagHashKey(int(statg.Conf.ServerIndex))
if usClose, err := redis.StatRds.Get(keyClose); err == nil && usClose != nil {
if ut, err2 := strconv.ParseInt(*usClose, 10, 64); err2 == nil {
srvClose = ut
}
}
version.ServerStartLast = time.Unix(srvStart, 0)
version.ServerAliveLast = time.Unix(srvAlive, 0)
version.ServerCloseLast = time.Unix(srvClose, 0)
_ = redis.StatRds.Set(keyStart, version.ServerStartTime.Unix(), 0)
_ = redis.StatRds.Set(keyClose, version.ServerStartTime.Unix(), 0)
_ = redis.StatRds.Set(keyAlive, time.Now().Unix(), 0)
})
if version.ServerAliveLast.After(version.ServerStartLast) {
ret = fmt.Sprintf("上次运行:【%v】\n", version.ServerAliveLast.Sub(version.ServerStartLast))
if version.ServerCloseLast.After(version.ServerStartLast) {
ret += fmt.Sprintf("上次关闭:【正常关闭🟢】\n")
} else {
ret += fmt.Sprintf("上次关闭:【异常关闭🔴】\n")
}
}
return ret
}