Mailinglisten-Archive |
Hi, >> Meine frage ist nun, was passiert, wenn mein Programm beendet wird, ohne dass >> ich ein >> mysql_close() aufrufe? > Ist zumindest schlecher Programmierstil, also solltest du es nicht machen. Ich weiss, nur hab ich ein ein paar Routinen einen mysql_close() vergessen und es dauert stunden, das ueberall einzupflegen .. aber solange kein Fehler auftaucht werden die Routinen eh nicht aufgerufen ;o) >> Merkt MySQL, dass mein Client weg ist und entfernt den allokierten Speicher >> oder habe ich hier >> ein schoenes Speicherloch ? > Also, ohne es jetzt nachgesehen zu haben: der Server wird IMHO auf jeden Fall > damit klarkommen, das eine Verbindung einfach so gekillt wird, ohne sauberen > close. Das passiert ja mit Netzwerkverbindungen vfter, und sollte also den > Server nicht vor un|berbr|ckbare Probleme stellen. Wenn nicht, nen Bugreport > machen ;) Jo.. das war mir klar, ein killall -KILL httpd (bei 300+ Prozessen) bringt mysql auch net zum schwitzen ;o) > Der Client, der ja eigentlich den Speicher allokiert (die Lib/API wird ja > client-seitig eingesetzt!), der kann damit schon eher Probleme haben, wenn du > einfach den Prozess beendest, ohne den Speicher freizugeben, aber das hdngt > wohl vom Betriebssystem ab. Linux hat wenig Probleme, da es ja den Speicher > komplett freigibt, bei Windows ist dies nicht zwangsldufig der Fall. Ich hoffe es mal, da man ja ueberall nachlesen kann, das ein malloc() ohne free() zu leaks fuehrt... und das gleiche dachte ich passiert bei mysql_close() auch wenn man es nicht benutzt... Vielleicht kann ich ja mal einen Test machen, z.B. ein Proggie 1000 mal aufrufen, was nur nen connect() macht aber ohne close() und dann die Werte von swap, free und shared vergleichen. Danke, Thomas --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive