Mailinglisten-Archive |
Hallo Mathias, > dazu muss man wissen, was readfile macht. > es liest den kompletten inhalt der datei in den speicher, > bevor es wieder ausgegeben wird, d.h. der prozess muss > die datei erstmal oeffen und komplett einlesen, und es im > speicher dann aufbereiten. das kann u.u. ein paar sekunden > dauern, weil erst wen das abgeschlossen ist, kann es weitergehen .. leider scheint da Docu und Realität nicht überein zu stimmen. memory_limit steht bei mir auf 32 MB. Trotzdem kann readfile() 80 MB große Dateien ausliefern. Das hatte ich vorher ja alles getestet und mit daher auch keine Sorgen gemacht da es offensichtlich ohne Speicherverbrauch in Dateigröße einher ging. Ich schätze mal readfile() macht intern auch nichts anderes als eine schleife und gibt das direkt an den Apache weiter. Bleibt die Frage ob er es mit blockorientierem flush() oder ohne macht. Ohne würde das Problem erklären. Nur scheint dabei einer der beiden das ganze zu Puffern. So langsam kommt bei mir aber der Apache in verdacht. Mir schein das das ganze auch bei einer blockorientierten Schleife passiert nur nicht ganz so krass. Daher vermute ich fast das der Apache intern die Daten cacht. Schließlich kann der Client die Daten ja nicht so schnell abnehmen wie der Apache sie liefern kann und irgendwo müssen die Daten ja hin. Ist ne ziemlich blöde Sache. Hat hier irgendwer Erfahrung im Massendownload von großen Datenmengen via PHP? Denn solange das ganze als normales File vom Indianer ausgeliefert wurde gab es Null Probleme. Gruß, Andreas
php::bar PHP Wiki - Listenarchive