Hello,
Mittlerweile funktioniert der error_log:
[Sat Dec 24 18:51:33 2011] [warn] [client xx.xxx.xxx.xx] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server, referer: http://www.seite.de/admin/index.php
[Sat Dec 24 18:51:33 2011] [warn] [client xx.xxx.xxx.xx] (104)Connection reset by peer: mod_fcgid: ap_pass_brigade failed in handle_request_ipc function, referer: http://www.seite.de/admin/index.php
Da scheinst Du nicht der einzige zu sein, der mit PHP für FastCGI diese Probleme hat. Ich habe gestern noch ein wenig gelesen, aber leider auch nicht wirklich Ursache und Lösung gefunden. Es könnte sich um einen Bug vom modfcgid handeln.
Ich sehe in Deinem Code keinerlei Prüfung ob die angegebene Datei existiert. Das ein einfaches file_exists(), is_file(), is_readable() könnte Deine, im Thread weiter unten auftauchenden Probleme (insbesondere 0 Byte Dateigröße des Downloads!) ganz einfach offenkundig werden lassen.
Wieso, er benutzt doch ein fopen(). Wenn das File nicht existiert, müsste es eine Fehlermeldung geben. Und wenn das File dann noch gesperrt sein sollte (allerdings durch mandatory Locking auf WinDOSen), würde ein fread() auch einen Fehler produzieren.
@DiamondDog:
Ein Workaround, um die Gefahr des direkten Linkens zu vermindern:
Kopiere das File unter einem Zufallsnamen in ein speielles Verzeichnis und linke auf diesen Zufallsnamen.
Von Zeit zu Zeit löschst Du dann alle Files in diesem Verzeichnis. Das kannst Du so ähnlich machen, wie der Garbage Collector von PHP, also z.B. bei jedem zehnten Mal Reinkopieren wird das Verzeichnis gescannt auf Files, die älter sind als z.B. eine Stunde und die werden dann gelöscht.
Um die Zeitabfrage billiger zu machen, kannst Du den Timestamp auch vor den Zufallsnamen setzen.
So kann das Ausliefern dann vom Server direkt geschehen, der dann auch Chunked arbeiten kann. Ob das direkte Ausliefern einwandfrei funktioniert, würde ich aber vorher nochmal genau ausprobieren, z.B. mit einem großen PDF-File. Der Adobe-PDF-Reader arbeitet z.B. chunked, wenn er es angeboten bekommt.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
