"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > متى يغلق تطبيق الويب GO اتصال قاعدة البيانات؟

متى يغلق تطبيق الويب GO اتصال قاعدة البيانات؟

نشر في 2025-04-30
تصفح:987

 When Should You Close Database Connections in Go Web Apps?

إليك غوص عميق في متى وكيفية التعامل مع هذا في التطبيقات التي تعمل إلى أجل غير مسمى.

المشكلة:

Func Main () { var err error DB ، err = sql.open ("postgres" ، "...") إذا خطأ! = لا شيء { log.fatalf ("لا يمكن الاتصال بقاعدة البيانات: ٪ v" ، err) } http.handlefunc ("/أي شيء" ، مهما كان) http.listenandserve ("127.0.0.1:8080" ، لا شيء) }

ينشأ السؤال: متى يجب استدعاء طريقة الإغلاق () على اتصال DB؟

الإجابة: ومع ذلك ، قد تستدعي اعتبارات أخرى معالجة يدوي.

var db *sql.DB

func main() {
    var err error
    db, err = sql.Open("postgres", "...")
    if err != nil {
        log.Fatalf("Couldn't connect to the database: %v", err)
    }

    http.HandleFunc("/whatever", whateverHandler)
    http.ListenAndServe("127.0.0.1:8080", nil)
}

للتطبيقات الأكثر تعقيدًا ، فكر في استخدام خادم رشيق ، مثل github.com/grpc-ecosystem/go-grpc-middleware/server ، والذي يسمح بإغلاق الموارد المؤجل وتنظيفه عند استلام الإشارات. يتضمن النهج التقاط الإشارات وتنفيذ آليات الإغلاق اليدوي. هذا مفيد للتحكم الحبيبي في إغلاق الموارد. على سبيل المثال ، يمكن استخدام قناة إغلاق لإخطار goroutines بإصدار الموارد قبل خروج البرنامج. يضمن اختيار النهج المناسب تنظيفًا مناسبًا ويمنع تسرب الموارد.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3