PHP Dateigröße für Download zu hoch?

Rain

Lieutenant
Registriert
Mai 2003
Beiträge
704
Hallo Leute,

ich bastel gerade an einem jQuery Filebrowser mit Abspielmöglichkeit für mp4 und Downloadoption. Bis auf Letzteres ist alles fertig, nach stundenlangem Gesuche für die Lösung des folgendem Problems bitte ich euch um Hilfe.

Mein Downloadscript sieht folgendermaßen aus:

PHP:
$do = mysql_query("SELECT `Path` FROM `db` WHERE `ID` = '".mysql_real_escape_string($_GET['id'])."';");
$row = mysql_fetch_assoc($do);

$downloadfile = $row['Path'];

$filename = substr($downloadfile, strripos($downloadfile, "/")+1);
$filesize = filesize($downloadfile);

header("Cache-Control: public");
header("Content-Type: application/octet-stream"); 
header("Content-Length: ".$filesize);
header("Content-Disposition: attachment; filename=".basename($filename)); 
readfile($downloadfile);

Ich hab bestimmt 2 Stunden gebraucht um rauszufinden, dass ein Download nicht funktioniert, falls eine Datei zu groß ist. Die Grenze liegt bei ca 120MB. Bis dahin funktioniert alles bestens. Ab ca 120MB leitet mich der IE auf ne Error-Site weiter (Webseite nicht gefunden), FF zeigt mir lediglich nur eine weisse Seite an.

Hilfe!

Mögliche wichtige PHP-Einstellungen dazu:

memory_limit: 512M
post_max_size: 2000M
upload_max_filesize: 2000M

Es soll jedenfalls theoretisch die Option bestehen, große Dateien hochzuladen. Das würde auch nur aus dem lokalen Netzwerk geschehen.

Wie kann ich größere Dateien (in dem Fall >120MB) downloadable machen?
 
ich vermute mal dass du nicht an die maximale laufzeit des php-script gedacht hast ;)
vor readfile() solltest du set_time_limit(0) aufrufen.
 
set_time_limit(0) hat leider nix gebracht und mit dem blockweise auslesen, das hab ich in den kommentaren irgendwie nicht gefunden.

Ich hab das ganze mal auf den richtigen Webserver geschoben und siehe da, es geht. Nur auf dem lokalen Webserver gibts die Probleme. Und dabei ist der richtige Webserver nicht mal so viel anders konfiguriert, ausser dass er memory_limit: 32M nur hat.

Mein Problem hat sich jedenfall erst mal selbst gelöst. Danke euch
 
Zurück
Oben