Gestion des connexions MySQL dans les gestionnaires HTTP Go
Le package base de données/sql dans Go gère les connexions à la base de données et gère automatiquement le pool de connexions. Lors de l’appel de sql.Open(), il renvoie un handle qui gère un pool de connexions. Ce handle établit de nouvelles connexions selon les besoins, garantissant ainsi qu'il y a toujours une connexion disponible pour les opérations de base de données.
Partage du handle de connexion à la base de données
Dans votre code, vous avez créé un variable globale db de type *sql.DB dans la fonction main(). Cette variable représente le handle du pool de connexions. Pour le partager avec les gestionnaires HTTP, vous pouvez transmettre le handle de base de données en tant que paramètre aux fonctions du gestionnaire.
Utilisation du handle de connexion dans les gestionnaires HTTP
Dans le HomeHandler fonction, vous pouvez accéder à la connexion à la base de données en utilisant le handle db qui est passé en paramètre :
import ( "database/sql" "fmt" ) func HomeHandler(w http.ResponseWriter, r *http.Request, db *sql.DB) { var msg string err := db.QueryRow("SELECT msg FROM hello WHERE page=?", "home").Scan(&msg) if err != nil { fmt.Fprintf(w, "Database Error!") } else { fmt.Fprintf(w, msg) } }
HTTP Enregistrement du gestionnaire
Dans la fonction main(), lors de l'enregistrement des gestionnaires HTTP, vous pouvez passer le handle de base de données en argument :
import ( "github.com/gorilla/mux" ) func main() { fmt.Println("starting up") db, err := sql.Open("mysql", "root@unix(/tmp/mysql.sock)/mydb") if err != nil { log.Fatalf("Error on initializing database connection: %s", err.Error()) } r := mux.NewRouter() r.HandleFunc("/", HomeHandler(db)) // Pass the db handle as an argument to the handler http.Handle("/", r) http.ListenAndServe(":8080", nil) }
En suivant ces étapes, vous pouvez partagez efficacement la connexion MySQL entre les goroutines HTTP dans Go. Le regroupement automatique des connexions du package base de données/sql garantit des performances et une gestion des ressources optimales.
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!