Al configurar un sistema de gestión de archivos en línea, y ahora he tocado un bloque.PHP readfile() y grandes descargas
estoy tratando de empujar el archivo al cliente usar este modified version of readfile:
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;
}
Pero cuando trato de descargar un archivo de 13 MB, es sólo romper a 4 MB. ¿Cuál sería el problema aquí? Definitivamente no es el límite de tiempo de ningún tipo porque estoy trabajando en una red local y la velocidad no es un problema.
El límite de memoria en PHP se establece en 300 MB.
Gracias por cualquier ayuda.
Es casi seguro que hay algo en el registro de errores, suponiendo que lo tiene activado. Verifique y enmiende la pregunta. – timdev
No. Nada relacionado con esto en el registro de errores. Todo lo que tengo es algunas advertencias de desaprobación de diferentes scripts. – Nirmal
¿Qué cliente está usando para descargar el contenido? ¿El comportamiento cambia si usa un cliente diferente? Mi idea es que el agente que está utilizando no puede hacer frente a una gran codificación fragmentada. Pruebe con un cliente diferente/y/o detecte el tráfico. – symcbean