Arrêt progressif du serveur http sous Linux
Lors de l'exécution d'un serveur http, il est souvent nécessaire d'effectuer certaines opérations avant la fermeture du serveur. Cela peut être fait en utilisant le mécanisme de signal Unix.
Une façon de procéder consiste à utiliser le package os.Signal dans 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) }
Ce code créera un nouveau serveur http et écoutez sur le port 8080. Lorsque le programme reçoit un signal d'interruption (par exemple, Ctrl C), il effectuera les opérations d'arrêt, qui dans ce cas incluent la fermeture du serveur et la sortie du serveur. programme.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!