ordnungsgemäßes Herunterfahren des http-Servers unter Linux
Beim Betrieb eines http-Servers ist es oft notwendig, bestimmte Vorgänge auszuführen, bevor der Server beendet wird. Dies kann mithilfe des Unix-Signalmechanismus erfolgen.
Eine Möglichkeit hierfür ist die Verwendung des os.Signal-Pakets in Go:
package main import ( "fmt" "log" "net/http" "os" "os/signal" ) func main() { // Create a new http server. http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") }) go func() { // Start the server. log.Fatal(http.ListenAndServe(":8080", nil)) }() // Create a channel to receive os signals. sigchan := make(chan os.Signal) signal.Notify(sigchan, os.Interrupt) // Block until a signal is received. <-sigchan // Perform shutdown operations. log.Println("Shutting down server...") // Close the server. err := http.CloseServer(http.DefaultServer) if err != nil { log.Fatal(err) } // Exit the program. os.Exit(0) }
Dieser Code erstellt einen neuen http-Server und Hören Sie auf Port 8080. Wenn das Programm ein Interrupt-Signal empfängt (z. B. Strg C), führt es die Abschaltvorgänge aus, zu denen in diesem Fall das Schließen des Servers und das Beenden gehören Programm.
Das obige ist der detaillierte Inhalt vonWie implementiert man Graceful Shutdown für einen HTTP-Server unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!