wie wichtig ist: mysql_free_result($var);
Hi Leute, auf meiner Seite werden auf ziemlich vielen Seiten ziemlich viele sql abfragen gemacht.
Deswegen wollte ich wissen inwiefern:
wichtig bei dem ganzen ist?
Deswegen wollte ich wissen inwiefern:
|
|
Quellcode |
1 |
mysql_free_result($result); |
wichtig bei dem ganzen ist?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »quibb« (13. Juli 2004, 10:09)
RE: wie wichtig ist: mysql_free_result($var);
Auszug aus der Doku:
Ich benutze die Funktion eigentlich nie. Ich weiß zwar nicht, wie deine Abfragen aussehen und wieviele gleichzeitige Anfragen deine DB bewältigen muss, aber in der Regel ist der Einsatz wirklich nicht nötig.
Solltest du aber mit Hunderten Aufrufen pro Minute und Tausenden Zeilen im Ergebnissatz rechnen, dann kann es u.U. sinnvoll sein. Soweit mir bekannt, brauchst du es nicht, wenn du immer mit der gleichen Ergebnis-Kennung arbeitest, also z.B.:
Hier wird der Speicher der wiederbenutzen Ergebnis-Kennung automatisch freigegeben, so dass die Benutzung von mysql_free_result() überflüssig ist.
Zitat
mysql_free_result() gibt den Speicher frei, der mit der Ergebnis-Kennung assoziert ist.
Die Funktion muss nur dann aufgerufen werden, wenn Sie sich bei Anfragen, die große Ergebnismengen liefern, Sorgen über den Speicherverbrauch zur Laufzeit des PHP-Skripts machen. Nach Ablauf des PHP-Skripts wird der Speicher ohnehin freigegeben.
Ich benutze die Funktion eigentlich nie. Ich weiß zwar nicht, wie deine Abfragen aussehen und wieviele gleichzeitige Anfragen deine DB bewältigen muss, aber in der Regel ist der Einsatz wirklich nicht nötig.
Solltest du aber mit Hunderten Aufrufen pro Minute und Tausenden Zeilen im Ergebnissatz rechnen, dann kann es u.U. sinnvoll sein. Soweit mir bekannt, brauchst du es nicht, wenn du immer mit der gleichen Ergebnis-Kennung arbeitest, also z.B.:
|
|
PHP-Quelltext |
1 2 3 4 |
$result = mysql_query("SELECT * FROM tabelle1");
// ...
$result = mysql_query("SELECT * FROM tabelle2");
// etc.
|
Hier wird der Speicher der wiederbenutzen Ergebnis-Kennung automatisch freigegeben, so dass die Benutzung von mysql_free_result() überflüssig ist.
erstmal danke dafür ;]
naja das problem is das unser server laut support durch zu viele mysql anfragen sehr langsam wird bzw. manchmal einfach abstürzt ...
deswegen suche ich momentan nach allen möglichen verbesserungen
da in einem script meistens mehrere tabellen angesprochen werden, hau ich die dinger lieber mal überall rein...
naja das problem is das unser server laut support durch zu viele mysql anfragen sehr langsam wird bzw. manchmal einfach abstürzt ...
deswegen suche ich momentan nach allen möglichen verbesserungen
da in einem script meistens mehrere tabellen angesprochen werden, hau ich die dinger lieber mal überall rein...
Wenn der Server mit zu vielen Anfragen zu kämpfen hat, würde ich es an deienr Stelle vermeiden, das mysql_free_result() zu an unnötigen Stellen aufzurufen, denn auch der Garbage Collector wird sicherlich ein wenig Ressourcen beanspruchen. Man bringt schließlich seinen Müll nicht raus, wenn der Mülleimer nur zu 20% gefüllt ist.
Ich würde dir also vorschlagen, Stellen zu optimieren, bei denen du weißt, dass ein Ergebnis zu viele Datensätze enthält und dafür die anderen in Ruhe zu lassen.
Außerdem könnte es sein, dass nicht der Speicher ein Problem darstellt, sondern die Arbeitsgeschwindigkeit der Datenbank, so dass das Umwandeln von vielen kleinen Abfragen in eine große sinnvoll sein kann. Bei INSERTs kann man nicht viel optimieren, aber bei UPDATE und SELECT ist es i.d.R. möglich.
Es ist oftmals angebracht, mit einem Zugriff einen großen Datensatz aus der Tabelle zu holen und die Zeilen mit mysql_fetch_array und über Array-Funktionen abzufragen statt ständig mit mysql_result zu arbeiten.
Evtl. hast du all das schon berücksichtigt; ein anschauliches Beispiel deiner Skripte mit ungefähren Tabellendimensionen könnte hier helfen, eine gezielte Lösung vorzuschlagen.
Ich würde dir also vorschlagen, Stellen zu optimieren, bei denen du weißt, dass ein Ergebnis zu viele Datensätze enthält und dafür die anderen in Ruhe zu lassen.

Außerdem könnte es sein, dass nicht der Speicher ein Problem darstellt, sondern die Arbeitsgeschwindigkeit der Datenbank, so dass das Umwandeln von vielen kleinen Abfragen in eine große sinnvoll sein kann. Bei INSERTs kann man nicht viel optimieren, aber bei UPDATE und SELECT ist es i.d.R. möglich.
Es ist oftmals angebracht, mit einem Zugriff einen großen Datensatz aus der Tabelle zu holen und die Zeilen mit mysql_fetch_array und über Array-Funktionen abzufragen statt ständig mit mysql_result zu arbeiten.
Evtl. hast du all das schon berücksichtigt; ein anschauliches Beispiel deiner Skripte mit ungefähren Tabellendimensionen könnte hier helfen, eine gezielte Lösung vorzuschlagen.
Ähnliche Themen
-
PHP »-
Zeichen ersetzen
(1. Februar 2008, 10:15)
-
Allgemeines Forum »-
Freemail?
(6. März 2003, 16:51)
-
Archiv: Software »-
Wichtig: ICQ???
(28. Oktober 2002, 22:22)


