Go HTTP 핸들러에서 MySQL 연결 관리
Go의 데이터베이스/sql 패키지는 데이터베이스 연결을 처리하고 자동으로 연결 풀링을 관리합니다. sql.Open()을 호출하면 연결 풀을 관리하는 핸들이 반환됩니다. 이 핸들은 필요에 따라 새로운 연결을 설정하여 데이터베이스 작업에 항상 사용 가능한 연결이 있도록 보장합니다.
데이터베이스 연결 핸들 공유
코드에서 main() 함수에 *sql.DB 유형의 전역 변수 db. 이 변수는 연결 풀 핸들을 나타냅니다. 이를 HTTP 핸들러와 공유하려면 db 핸들을 핸들러 함수에 매개변수로 전달할 수 있습니다.
HTTP 핸들러에서 연결 핸들 사용
HomeHandler에서 함수를 사용하면 전달된 db 핸들을 사용하여 데이터베이스 연결에 액세스할 수 있습니다. 매개변수:
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 핸들러 등록
main() 함수에서 HTTP 핸들러를 등록할 때 db 핸들을 인수로 전달할 수 있습니다.
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) }
이 단계를 따르면 Go에서 HTTP 고루틴 간에 MySQL 연결을 효과적으로 공유할 수 있습니다. 데이터베이스/SQL 패키지의 자동 연결 풀링은 최적의 성능과 리소스 관리를 보장합니다.
위 내용은 Go HTTP 핸들러 간에 MySQL 연결 핸들을 공유하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!