Dateidownload-problem mit PHP?

mccae

Senfdazugeber
Huhu,

Ich habe leider ein kleines Problem.

Und zwar wurde ein Dateidownload realisiert indem ich meine Datei, folgend auf die entsprechenden Header über PHP ausgebe.

Dies mache ich, da ein zentrales Skript die richtige Datei zu den Parametern liefern muss.
Außerdem soll der originale Aufenthaltsort der Dateien, welcher sich außerhalb des Webroots befindet, verschleiert werden und unerreichbar sein.

Leider kommt es bei größeren Dateien oder Leuten mit schlechter Verbindung zu einer Unterbrechung des Downloads (der Download wird abgeschlossen obwohl noch nicht alle Daten angekommen sind), da ein PHP Script auf dem Server nur maximal 30 Sekunden laufen darf.

Gibt es dafür eine Lösung?

X-SendFile hört sich interessant an, wird jedoch von meinem Hoster leider nicht angeboten.
Ich habe nur Zugriff auf die php.ini.

Es muss doch eine Möglichkeit geben die entsprechende Datei weiterzugeben und das PHP Script zu beenden...

Kennt sich jemand aus?

Liebe Grüße,
M.C.Caesar
 
Stell doch die max_execution_time einfach höher für dieses Script:
PHP:
ini_set('max_execution_time', 600);
 
Da ich auch downloads über ein php-skript ermögliche (pdf-dateien, tiff-bilder, etc.) möchte hier noch mal nachhaken, da ich hier bezüglich der Skriptlaufzeit bislang noch keine Probleme hatte .. :suspekt:

Liegt das tatsächlich an der Skriptlaufzeit?
Wie groß sind denn deine Files?
Bei mir ist es so, wenn der Download erstmal gestartet ist hat das Skript eigentlich gar keinen Einfluss mehr.
Ich steige sofort nach Übergabe der header mit exit() aus dem Skript aus und kann ganz bequem weitersurfen.
Man liefert doch nicht das gesamte file an den header, oder (würde ziemlich lange dauern)?
Wie hast du das Verweisziel zum Downloadfile definiert?
Versuche es mal mit
HTML:
<a href="download.php?file=irgendwas" target="_blank">
 
Hallo,

Zuallererst, vielen Dank für eure Antworten.

An eine Erhöhung der Scriptlaufzeit habe ich auch gedacht, jedoch kann es bei sehr vielen lange Downloads zu einer hohen CPU Auslastung kommen.

Die Dateigröße der Dateien startet bei wenigen Kilobyte und geht bis 2Gb.

Auch wenn man nur eine 5Mb Datei downloadet - der Download wird nach 30 Sekunden abgebrochen.

Wenn ich die Laufzeit des Scripts wie vorgeschlagen jetzt auf maximal 10 Minuten setzte, wird es funktionieren - der PHP Interpreter ist aber immer noch aktiv.

Deshalb kommt eine solch' unsichere Erhöhung der Executiontime nicht in Frage.

Gibt es denn keine Alternative?

Auf einem anderen Fileserver habe ich X-SendFile laufen, bei meinem Webhost ist diese Apache Erweiterung leider nicht verfügbar da es sich um shared Webspace handelt.

Ich bräuchte nun eine Lösung für dieses Problem - es muss einfach etwas geben.
Es wär' ja nicht zu glauben, dass sich beim PHP Development-team noch nie jemand darüber Gedanken gemacht hat.

Was kann man sonst noch tun?

mfg,
 
Zurück