Hola de nuevo señores.
El tema del que quiero hablar no es para nada nuevo, sin embargo no he encontrado la solución adecuada a mi problema en los posts que he investigado por la web. La situación es la siguiente:
Implementé una interfaz que permite a los usuarios descargar carpetas de archivos alojadas en el servidor web. Primero las comprimo en un archivo temporal de formato zip, luego las mando al búfer para ser descargadas y finalmente elimino el archivo zip generado.
Este es el código que utilizo, ya muy comentado, por cierto:
header("Content-disposition: attachment;filename=$elem.zip");
header("Content-Type: application/octet-stream");
readfile("./FTP/TempZip/temp_$cod.zip");//transferir el archivo zip al bufer
unlink("./FTP/TempZip/temp_$cod.zip");//eliminar el archivo zip previamente transferido
El resultado que obtengo depende del tamaño del archivo zip generado: he intentado descargar un archivo zip de 370 KB y el borrado se realiza correctamente, pero con otro de 3.10 MB no es posible. Esto me causa un verdadero problema, ya que el tamaño promedio de las carpetas a descargar es de hasta 25 MB.
Incluso la función register_shutdown_function("borrado") que comentaba 'manuelsm' en su tema del 2009 "Borrar archivo del servidor tras su descarga" me da exactamente el mismo resultado.
Gracias por sus comentarios.