Hallo, Christian,
nicht dass ich sonderlich Ahnung hätte, aber ich lese interessiert mit... eine Frage habe ich:
Überleg doch mal selbst: 2 Millionen Datensätzt - wie groß ist einer durchschnittlich? Da
davon auszugehen ist, dass die Datensätze mindestens mit einem Pointer im Speicher
abgelegt werden, und dieser Pointer auf 32-Bit-Plattformen aus 4 Byte bestehen, belegst
du _mindestens_ schon mal 8 Megabyte Speicher nur, um ein Minimum an
Verwaltungsinformationen abzulegen.
Du vergisst, dass es hier um PHP geht. PHP benutzt ein wenig mehr Speicher fuer seine
Datenstrukturen. Ich bin ehrlich gesagt sogar ueberrascht, das eine deep copy von den Arrays
gemacht wird... da scheint Sascha Schumann viel Arbeit investiert zu haben.
Was ist mit "deep copy der Arrays" gemeint?
Ich diskutierte kürzlich mit Michael darüber, wie PHP mit einem MySQL-Result umgeht und ob die mysql_fetch_*-Funktionen die Daten womöglich im Speicher verdoppeln. Ein Lesen bzw. Umwandeln des Ergebnisses in einen PHP-Array Zeile für Zeile bzw. Datensatz für Datensatz wäre sinnlos, wenn das Ergebnis schon vorher in einer Array-Speicherstruktur vorhanden wäre, ein $datensatz_array=mysql_fetch_*(...) wäre demnach ein Verdoppeln der Daten im Speicher, was äußerst speicherintensiv wäre, wenn man Operationen mit allen Datensätzen des Resultates vorhat (welche nicht von der Datenbank ausgeführt werden können). Wir wussten beide nicht, ob diese Annahme stimmen mag, vielleicht weißt du etwas dazu und meintest genau das mit deep copy....
(Der Thread ist momentan nicht auffindbar, da der Server überlastet ist.)
Grüße,
Mathias