Hallo,
Möglich. Denn readfile() arbeitet AFAIK ohne nennenswerten Pufferbedarf.
Das verunsichert mich etwas. Ich hatte mich damals über die Kommentare in der PHP-Doku in das Thema eingelesen und da meinen einige, dass das Problem bei readfile durchaus bestünde:
http://www.php.net/manual/de/function.readfile.php#48683
so habe ich es ungefähr übernommen. Eine andere (korrigierte) Version steht hier:
http://www.php.net/manual/de/function.readfile.php#54295
*grübel*
Meinst du die irren sich?
Das will ich nicht ausschließen. Ich könnte mir aber auch gut vorstellen, dass sich das auf ältere PHP-Versionen bezieht; immerhin sind die Kommentare schon von 2005. Genau weiß ich's auch nicht, aber ich habe mit PHP5 (damals noch unter Windows) definitiv schon Dateien auf diese Weise durchgeschleust, die größer waren als mein gesetztes memory limit (Memory: 8MB, Dateien >10MB gingen problemlos).
Nebenbei meint da auch jemand, dass readfile 55% langsamer wäre wie echo/fread
Hab ich eben auch gesehen. Das überrascht mich sehr (ich würd's eher umgekehrt erwarten), aber darauf habe ich noch nie geachtet.
Und ich habe gerade im Quellcode von PHP 5.3.6 nachgesehen. Sowohl fpassthru() als auch readfile() rufen intern die C-Funktion php_stream_passthru auf. Die legt einen lokalen Puffer von 8k Größe an (8192 Bytes) und kopiert dann in einer while-Schleife lauter 8k-Häppchen. Im Gegensatz dazu allokiert fread() einen Puffer in der angegebenen Größe und liest alles in einem Rutsch.
Damit ist beides erklärt: readfile() oder fpassthru() brauchen tatsächlich so gut wie keinen Speicher, und die Schleifenlösung mit fread() kann schneller als readfile() sein, wenn die gewählte Blockgröße deutlich >8k ist.
was bei diesen Datenmengen durchaus etwas ausmachen kann.
Klar, wenn wir von Datenmengen reden, die mehrere Minuten ausmachen ...
Ciao,
Martin
Besteht ein Personalrat aus nur einer Person, erübrigt sich die Trennung nach Geschlechtern.
(aus einer Info des deutschen Lehrerverbands Hessen)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(