Während der Einrichtung eines Online-Datei-Management-System und jetzt habe ich einen Block getroffen.PHP readfile() und große Downloads
Ich versuche, die Datei an den Client mit dieser modified version of readfile zu drücken:
function readfile_chunked($filename,$retbytes=true) {
$chunksize = 1*(1024*1024); // how many bytes per chunk
$buffer = '';
$cnt =0;
// $handle = fopen($filename, 'rb');
$handle = fopen($filename, 'rb');
if ($handle === false) {
return false;
}
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
echo $buffer;
ob_flush();
flush();
if ($retbytes) {
$cnt += strlen($buffer);
}
}
$status = fclose($handle);
if ($retbytes && $status) {
return $cnt; // return num. bytes delivered like readfile() does.
}
return $status;
}
Aber wenn ich versuche, eine 13 MB-Datei zum Download, es ist nur bei 4 MB zu brechen. Was wäre das Problem hier? Es ist definitiv nicht das Zeitlimit irgendeiner Art, weil ich in einem lokalen Netzwerk arbeite und Geschwindigkeit kein Problem ist.
Das Speicherlimit in PHP ist auf 300 MB festgelegt.
Vielen Dank für jede Hilfe.
Es ist fast sicher etwas im Fehlerprotokoll, vorausgesetzt, Sie haben es eingeschaltet. Überprüfen Sie das und ändern Sie die Frage. – timdev
Nein. Nichts im Zusammenhang damit im Fehlerprotokoll. Alles, was ich habe, sind einige Verwarnungen aus verschiedenen Skripten. – Nirmal
Welchen Client benutzen Sie, um den Inhalt herunterzuladen? Ändert sich das Verhalten, wenn Sie einen anderen Client verwenden? Mein Vermutung wäre, dass der Agent, den Sie verwenden, große chunked Codierung nicht bewältigen kann. Versuchen Sie einen anderen Client/und/oder schnüffeln Sie den Verkehr. – symcbean