Am 3/12/13 5:58 PM, schrieb Stephan Schuler:
Hallo Leo
Rainer hat zunächst mal Recht: Nicht jeglicher Dateitransfair wird durch PHP
geschickt sondern das musst du erst mal konfigurieren. Wenn ich mich da richtig
erinnere musst du hierzu ganz einfach selbst in deine .htaccess-Datei
schreiben, welchen Ordner du gerne geschützt haben möchtest. Dadurch lässt sich
das sowohl auf einige Ordner des Fileadmins als auch auf bestimmte
Extension-Upload-Folder beschränken.
Entweder der Server liefert direkt aus oder ruft eine cgi-script/modul
auf. Das wiederum könnte einen Redirect machen oder liefert selber über
stdout aus. letzteres ist das Standardprocedere bei PHP.
Wenn naw_securedl die Datei einfach per "readfile" einließt ist der
Performanceeinbruch durch erhöhten Speicherbedarf moderat. Trotzdem liegt der Dateioutput
im PHP-Output-Puffer, du könntest die Datei also mit ob_get_contents abfangen und
ansehen. Das will zwar keiner, zeigt aber, dass Speicher an einer Stelle belegt wird wo
man ihn eigentlich nicht braucht.
Es ist nicht nur der Speicherverbrauch, es ist auch die Prozesslaufzeit.
Falls der Client extrem langsam ist (Modem), dann wird der Prozess so
lange offengehalten, bis alles raus ist.
Ich lese die Datei deshalb nicht mit readfile ein sondern schicke einfach den HTTP-Header
"X-Sendfile" mit der der den absoluten Pfad der Datei im Dateisystem enthält. In meinem
Apache habe ich das zugehörige Modul "xsendfile" aktiviert. Das schneidet den Header
wieder raus und gibt stattdessen die Datei aus. Ein entsprechender Content-Type-Header sowie die
passende Content-Length fügt das Modul selbständig hinzu.
Das mit dem X-Sendfile war neu für mich. Danke für die Inspiration.
Bei kleinen Dateien ist natürlich weiterhin für jede Datei ein weiterer
PHP-Prozess der erkennbar limitierende Faktor. Der läuft für wenige ms und
braucht in dieser Zeit etwas CPU und etwas Speicher. Mit zunehmender Dateigröße
aber spielt das keine Rolle mehr.
Einsatz solcher Eingriffe in den Server widerläuft m.E.ei wenig der
Philosophie eines Frameworkes/CMS, es soll ja unabhängig der Umgebung
laufen.
Aber manchmnal gehte es nicht anders. ;-))
Gruß Rainer
--
Rainer Schleevoigt
Medientechnik // eLearning
Universität Hamburg
Dekanat der Fakultät für Mathematik,
Informatik und Naturwissenschaften
Rothenbaumchaussee 19
20146 Hamburg
Tel. +49 040 42838 9598
eMail rainer.schleevo...@uni-hamburg.de
http://www.min.uni-hamburg.de/eLearning
_______________________________________________
Lecture2Go Team
http://lecture2go.uni-hamburg.de
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german