Tino hat folgendes geschrieben: |
| Auf den ersten Blick fallen mir die Funktionen mysql_close und mysql_free_result auf. Hast du dir die schon mal genauer angesehen? |
Klar muss im Anschluss mit mysql_free_result eine Abfrage wieder freigegeben werden.
Allerdings lädt mysql_store_result erstmal die komplette Abfrage in den Speicher - nutzt also unter Umständen viele Speicher vollkommen unnötig.
mysql_use_result hingegen lädt immer nur einen Teil der Abfrage. Sobald die entsprechenden Records ausgelesen wurden wird der verwendete Speicher automatisch wieder freigegeben und die nächsten Records werden von der Datenbank abgefragt.
Klar muß hierfür die Datenbank Verbindung aufrecht erhalten werden - und es darf auch keine andere Abfrage zwischendurch über diese Connection abgehandelt werden. Aber der große Vorteil ist: Es sind nie alle Daten zur gleichen Zeit im Speicher! Und es werden auch nicht alle Daten sofort geladen - es entsteht also keine größere Wartezeit für den User.