Download bricht ab

herrgarnele

Erfahrenes Mitglied
Hallo!

Um den direkten Zugriff auf downloadbare Dateien zu vermeiden benutze ich ein kleines Downloadskript:
PHP:
$files = Array("1" => "datei1.mp3",
               "2" => "datei2.mp3");

$filename = "../sound/archiv/".$files[$_GET[mix]];

header("Content-Type: x-audio/x-mpeg");
header("Content-Length: ".filesize($filename));
header("Content-Disposition: attachment; filename=".$files[$_GET[mix]]);
readfile($filename);
Dieses verlinke ich dann in dieser Art:
PHP:
<a href="download.php?mix=1">datei1.mp3</a>
Bei einer 62MB grossen Datei funktioniert das ohne Probleme.
Die zweite Datei ist aber 140MB groß. Hier bricht der Download immer ohne Fehlermeldung ab. Bei 10 Versuchen brach der Download an immer anderen Stellen ab, meistens zwischen 100 und 135MB.

Woran könnte das liegen?
Beziehungsweise was kann ich tun damit der Download immer stabil bis zum Ende durchläuft?
 
Hallo Gumbo!

Ich habe gleich zu Beginn des Files set_time_limit(0); gesetzt.
Beim ersten Test bricht der Download wieder ab, diesmal bei 128MB.. (von 142).
Andere Ideen woran's liegen könnte?
 
Probier mal Folgendes statt der readfile()-Funktion:
PHP:
if( $fp = fopen($file, 'rb') ) {
	fpassthru($fp);
	fclose($fp);
}
 
Beim ersten Test hat der Download bei 102MB abgebrochen. Och Menno!

Der Vollständigkeit halber - so sieht die Datei momentan aus:
PHP:
set_time_limit(0);
$files = Array("1" => "datei1.mp3",
               "2" => "datei2.mp3");

$filename = "../sound/archiv/".$files[$_GET[mix]];

header("Content-Type: x-audio/x-mpeg");
header("Content-Length: ".filesize($filename));
header("Content-Disposition: attachment; filename=".$files[$_GET[mix]]);

if( $fp = fopen($filename, 'rb') ) {
    fpassthru($fp);
    fclose($fp);
}
 
Zurück