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

Antwort per Email an