Linux 上 http 伺服器的正常關閉
執行 http 伺服器時,通常需要在伺服器登出之前執行某些操作。這可以使用 Unix 訊號機制來完成。
實現此目的的一種方法是使用 Go 中的 os.Signal 套件:
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) }
此程式碼將建立一個新的 http 伺服器並偵聽連接埠 8080。當程式收到中斷訊號(例如 Ctrl C)時,它將執行關閉操作,在本例中包含關閉伺服器並退出節目。
以上是如何在Linux上實現HTTP伺服器的優雅關閉?的詳細內容。更多資訊請關注PHP中文網其他相關文章!