首頁 > 後端開發 > Golang > 如何在Linux上實現HTTP伺服器的優雅關閉?

如何在Linux上實現HTTP伺服器的優雅關閉?

Linda Hamilton
發布: 2024-12-16 00:58:09
原創
724 人瀏覽過

How to Implement Graceful Shutdown for an HTTP Server on Linux?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板