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