Durante l'installazione di un sistema di gestione file online, ora ho colpito un blocco.PHP readfile() e download di grandi dimensioni
sto cercando di spingere il file al client utilizzando questo 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;
}
Ma quando provo a scaricare un file di 13 MB, è solo la rottura a 4 MB. Quale sarebbe il problema qui? Non è sicuramente il limite di tempo di qualsiasi tipo, perché sto lavorando su una rete locale e la velocità non è un problema.
Il limite di memoria in PHP è impostato su 300 MB.
Grazie per qualsiasi aiuto.
C'è quasi sicuramente qualcosa nel registro degli errori, presupponendo che sia stato attivato. Controlla quello e modifica la domanda. – timdev
No. Niente in merito a questo nel registro degli errori. Tutto quello che ho sono alcuni avvisi di deprecazione da diversi script. – Nirmal
Quale client stai usando per scaricare il contenuto? Il comportamento cambia se si utilizza un client diverso? Il mio Guess sarebbe che l'agente che stai usando non può gestire una codifica chunked di grandi dimensioni. Prova un altro cliente/e/o annusando il traffico. – symcbean