Leer y copiar fichero con buffer PHP (fopen, fgets, fwrite, ob_flush)
Cuando manejamos archivos pequeños no hace falta usar ningún buffer ya que no es necesario leer el contenido por partes para evitar llenar la memoria de nuestro servidor, pero todo cambia cuando trabajamos con archivos pesados (grandes), estos archivos pesados pueden generar errores por sobrepasar el límite de memoria, por esta razón es necesario hacer el proceso de forma fragmentada.
Pasos a seguir para seguir la traza del ejemplo://creamos un fichero para escribir el contenido en él $ficheroDeEscritura = tempnam(null,'temp_'); $fd_pdftmp = fopen($ficheroDeEscritura, 'w');//abrimos archivo en modo escritura if ($fd_pdftmp) { /*vamos a abrir a leer la ruta del archivo contenido en la variable $ficheroALeer para copiarla en el archivo perteneciente a la variable $ficheroDeEscritura*/ $gestor = fopen($ficheroALeer, 'r'); //abrimos archivo en modo lectura //usamos buffer para ir leyendo y copiando poco el contenido while (($buffer = fgets($gestor, 4096)) !== false) { //escribimos contenido fwrite($fd_pdftmp, $buffer); ob_flush(); set_time_limit(10); } if (!feof($gestor)) { echo "Error: fallo inesperado de fgets()\n"; } fclose($gestor); } fclose($fd_pdftmp);//cerramos el descriptor |