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中文网其他相关文章!