דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. חיבור וניתוק נכון למסד נתונים

חיבור וניתוק נכון למסד נתונים

מתוזמן נעוץ נעול הועבר תכנות
16 פוסטים 5 כותבים 219 צפיות 5 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • E מנותק
    E מנותק
    eido
    כתב נערך לאחרונה על ידי
    #1

    עד היום השתמשתי בקוד הזה:

     mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // הפעלת זריקת חריגות אוטומטית לשגיאות
    try {
        $conn = new mysqli($host, $username, $password, $dbname);
        $conn->set_charset("utf8mb4");
    
    
    $sql = *****;
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("si", $_REQUEST['***'], $_REQUEST['***']);
    
    if ($stmt->execute()) {
        logRequest('/tmp/request_log.txt', "ok - **** בהצלחה");
          header('Content-Type: application/json; charset=utf-8');
            echo json_encode([
                "status" => "success",
                "message" => "*** בהצלחה"
            ], JSON_UNESCAPED_UNICODE);
        
    } else {
        logRequest('/tmp/request_log.txt', "error - שגיאה");
        
        respondError("שגיאה ב***");
    }
    // $stmt->close();
    // $conn->close();
    } catch (mysqli_sql_exception $e) {
        logRequest('/tmp/request_log.txt', "Database Connection Failed: " . $e->getMessage());
    
        respondError("שגיאה");
    }
     finally {
    
        if (isset($stmt)) {
            $stmt->close();
        }
        $conn->close();
    }
    
    

    האם יש בזה בעיה? בצורת הסגירה?

    תגובה 1 תגובה אחרונה
    0
    • E מנותק
      E מנותק
      eido
      כתב נערך לאחרונה על ידי
      #2

      אני מדבר בעיקר על זה

      // $stmt->close();
      // $conn->close();
      } catch (mysqli_sql_exception $e) {
          logRequest('/tmp/request_log.txt', "Database Connection Failed: " . $e->getMessage());
       
          respondError("שגיאה");
      }
       finally {
       
          if (isset($stmt)) {
              $stmt->close();
          }
          $conn->close();
      }
      

      יש בעיה לעשות פשוט

      if (isset($stmt)) {
          $stmt->close();
      }
      $conn->close();
      

      או שצריך לוודא עוד משהו? שיש חיבור פעיל או משהו?

      תגובה 1 תגובה אחרונה
      0
      • E מנותק
        E מנותק
        eido
        כתב נערך לאחרונה על ידי
        #3

        מישהו?

        תגובה 1 תגובה אחרונה
        0
        • ל מנותק
          ל מנותק
          לעזור לכולם
          כתב נערך לאחרונה על ידי
          #4

          סתם שאלה
          למה דחוף לך סגירת החיבור?

          תגובה 1 תגובה אחרונה
          0
          • E מנותק
            E מנותק
            eido
            כתב נערך לאחרונה על ידי
            #5

            שחרור משאבים, ככה אומרים.
            הענין הוא שהשיטה הזו נראית לי מקובלת ובסדר גמור
            if (isset($stmt)) {
            $stmt->close();
            }
            $conn->close();
            אבל הבינה מלאכותית כל פעם צועקת שאם יש תקלה והחיבור בכלל לא התחיל זה יגרום לשגיאה וקריסה וכו'. מזה כמובן אני רוצה להמנע. אז היא מציעה את הפתרון שלה, שזה הוספת 2-3 מילים בסה"כ, שזה לא שינוי משמעותי אבל אני לא אתחיל לשנות דברים רק בגלל שהיא אמרה... אני יודע מנסיון שהבינות המלאכותיות כולן (מי שניסיתי לפוחות) לפעמים מבלבלות את השכל וממציאות דברים שלא היו ולא נבראו, ולכן חשוב לי לדעת מאנשים אמיתיים שיודעים מה שמדברים.

            ל תגובה 1 תגובה אחרונה
            0
            • E eido

              שחרור משאבים, ככה אומרים.
              הענין הוא שהשיטה הזו נראית לי מקובלת ובסדר גמור
              if (isset($stmt)) {
              $stmt->close();
              }
              $conn->close();
              אבל הבינה מלאכותית כל פעם צועקת שאם יש תקלה והחיבור בכלל לא התחיל זה יגרום לשגיאה וקריסה וכו'. מזה כמובן אני רוצה להמנע. אז היא מציעה את הפתרון שלה, שזה הוספת 2-3 מילים בסה"כ, שזה לא שינוי משמעותי אבל אני לא אתחיל לשנות דברים רק בגלל שהיא אמרה... אני יודע מנסיון שהבינות המלאכותיות כולן (מי שניסיתי לפוחות) לפעמים מבלבלות את השכל וממציאות דברים שלא היו ולא נבראו, ולכן חשוב לי לדעת מאנשים אמיתיים שיודעים מה שמדברים.

              ל מנותק
              ל מנותק
              לעזור לכולם
              כתב נערך לאחרונה על ידי
              #6

              @eido כתב בחיבור וניתוק נכון למסד נתונים:

              שחרור משאבים, ככה אומרים.

              אם יש לך שרת טוב, זה לא אמור לעניין אותך
              הזמן שאתה מקדיש לזה הוא הרבה יותר יקר

              י תגובה 1 תגובה אחרונה
              1
              • E מנותק
                E מנותק
                eido
                כתב נערך לאחרונה על ידי
                #7

                זה ענין של לדעת, נכון או לא נכון, לדעתי כותבים קוד נכון גם אם זה לוקח יותר זמן.

                תגובה 1 תגובה אחרונה
                0
                • ל לעזור לכולם

                  @eido כתב בחיבור וניתוק נכון למסד נתונים:

                  שחרור משאבים, ככה אומרים.

                  אם יש לך שרת טוב, זה לא אמור לעניין אותך
                  הזמן שאתה מקדיש לזה הוא הרבה יותר יקר

                  י מנותק
                  י מנותק
                  יוסף בן שמעון
                  כתב נערך לאחרונה על ידי
                  #8

                  @לעזור-לכולם כתב בחיבור וניתוק נכון למסד נתונים:

                  @eido כתב בחיבור וניתוק נכון למסד נתונים:

                  שחרור משאבים, ככה אומרים.

                  אם יש לך שרת טוב, זה לא אמור לעניין אותך
                  הזמן שאתה מקדיש לזה הוא הרבה יותר יקר

                  אני מוחה, אסור לגרום לזלילת משאבים, זה לא חינוכי גם אם יש לך שרת על, חוץ מזה שבדרך כלל אין לך שרת על ואתה לא יודע איפה זה יפגוש אותך

                  תגובה 1 תגובה אחרונה
                  3
                  • yossizY מנותק
                    yossizY מנותק
                    yossiz
                    כתב נערך לאחרונה על ידי
                    #9

                    ב-PHP כל בקשה זה תהליך נפרד אז החיבור אמור להיסגר אוטומטית בסוף הבקשה

                    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                    תגובה 1 תגובה אחרונה
                    1
                    • E מנותק
                      E מנותק
                      eido
                      כתב נערך לאחרונה על ידי
                      #10

                      אז אתה (ראיתי שגם dovid הסכים איתך) אומר שכל הסגירה בכלל מיותרת?

                      dovidD תגובה 1 תגובה אחרונה
                      0
                      • E eido

                        אז אתה (ראיתי שגם dovid הסכים איתך) אומר שכל הסגירה בכלל מיותרת?

                        dovidD מנותק
                        dovidD מנותק
                        dovid
                        ניהול
                        כתב נערך לאחרונה על ידי dovid
                        #11

                        @eido הוא העלה טענה, והצבעתי כי היא נכונה.
                        בתיאוריה, ואולי לפעמים זה גם למעשה, שחרור משאבים זה עדיין משימה נחוצה, כי PHP בנוי להיות מערכת גדולה, ותיאורטית אורך חיים של בקשה יכול להיות גדול ומורכב מאוד, ובשביל מקביליות טובה צריך לשחרר משאבים מוקדם ככל האפשר.
                        עם זאת בקוד שאתה עצמך כותב די הגיוני לזרום עם הטענה הזאת. זה בערך מה שאמרו אחרים, אלא שבהחלט צודק @יוסף-בן-שמעון שראוי תמיד להיות אכפתי ולברר כמה שאפשר בדיוק כפי שאתה נוהג, כי דרך אחרת עשויה להוביל לבעיות ובזבוז בלתי הפיך במערכות בשימוש שוטף.

                        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                        תגובה 1 תגובה אחרונה
                        3
                        • E מנותק
                          E מנותק
                          eido
                          כתב נערך לאחרונה על ידי
                          #12

                          קיבלתי.
                          ולעצם הענין, האם יש טעם בטענה שסגירה כזו:
                          if (isset($stmt)) {
                          $stmt->close();
                          }
                          $conn->close();
                          עלולה להוות בעיה או לא?

                          תגובה 1 תגובה אחרונה
                          0
                          • dovidD מנותק
                            dovidD מנותק
                            dovid
                            ניהול
                            כתב נערך לאחרונה על ידי
                            #13

                            "בעיה" מאוד קטנה, כפי שכתבת בעצמך.
                            זה קוד שגורם שגיאה לא מטופלת שזה עצמו משהו שאתה יכול לומר עליו "שיהיה".
                            כעושים פרוייקט גדול, חשוב לנהל שגיאות וללכוד אותם ולפעול בהתאם לעניין. הקוד שלך עלול לזרוק שגיאה בתוך בלוק finally, במקרה שהקונקשן למשל התנתק ברוטלית מכל סיבה שהיא, הייתה שגיאה, ואז כשמגיע הבלוק של הfinally אתה מנסה לסגור ונזרקת שגיאה שאי אפשר לסגור חיבור סגור.
                            אומר את האמת, אף פעם לא הייתי כ"כ פדנט בכתיבת קוד.
                            אכן במערכות גדולות שווה להשקיע שלא יקרו גם כאלו דברים קטנים.

                            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                            תגובה 1 תגובה אחרונה
                            1
                            • E מנותק
                              E מנותק
                              eido
                              כתב נערך לאחרונה על ידי
                              #14

                              תודה.
                              אז אם אני מבין נכון, כל עוד זה לא מערכת גדולה ומורכבת, הסגירה הזו בסדר?

                              תגובה 1 תגובה אחרונה
                              1
                              • E מנותק
                                E מנותק
                                eido
                                כתב נערך לאחרונה על ידי
                                #15

                                וואי, זה מעיק כל הענין של אישורי הפוסטים.
                                מתי מסיימים עם זה?

                                תגובה 1 תגובה אחרונה
                                1
                                • E מנותק
                                  E מנותק
                                  eido
                                  כתב נערך לאחרונה על ידי
                                  #16

                                  מצוין, תודה רבה!

                                  תגובה 1 תגובה אחרונה
                                  0
                                  תגובה
                                  • תגובה כנושא
                                  התחברו כדי לפרסם תגובה
                                  • מהישן לחדש
                                  • מהחדש לישן
                                  • הכי הרבה הצבעות


                                  בא תתחבר לדף היומי!
                                  • התחברות

                                  • אין לך חשבון עדיין? הרשמה

                                  • התחברו או הירשמו כדי לחפש.
                                  • פוסט ראשון
                                    פוסט אחרון
                                  0
                                  • דף הבית
                                  • קטגוריות
                                  • פוסטים אחרונים
                                  • משתמשים
                                  • חיפוש
                                  • חוקי הפורום