mirror of
https://github.com/Tencent/WeKnora.git
synced 2026-11-01 04:38:03 +08:00
- Introduced `started_at` and `uptime_seconds` fields to the `SystemInfo` structure for tracking server boot time and uptime. - Updated the `GetSystemInfo` handler to populate these new fields based on server runtime. - Enhanced the frontend to display server startup time and uptime in the system information view, improving visibility for users. - Added localization support for new labels and descriptions related to server uptime and startup time in multiple languages.
28 lines
826 B
Go
28 lines
826 B
Go
package runtime
|
|
|
|
import "time"
|
|
|
|
// serverStartedAt is set once at process boot (see MarkServerStarted).
|
|
var serverStartedAt time.Time
|
|
|
|
// MarkServerStarted records the instant the WeKnora server process started.
|
|
// Call once from main() before heavy init so uptime reflects the full process
|
|
// lifetime, not merely when the HTTP listener binds.
|
|
func MarkServerStarted() {
|
|
serverStartedAt = time.Now().UTC()
|
|
}
|
|
|
|
// ServerStartedAt returns the boot instant in UTC. Zero when MarkServerStarted
|
|
// was not called (e.g. some tests); callers should treat zero as unknown.
|
|
func ServerStartedAt() time.Time {
|
|
return serverStartedAt
|
|
}
|
|
|
|
// ServerUptime returns elapsed time since MarkServerStarted. Zero when unset.
|
|
func ServerUptime() time.Duration {
|
|
if serverStartedAt.IsZero() {
|
|
return 0
|
|
}
|
|
return time.Since(serverStartedAt)
|
|
}
|