Foros del Web » Programando para Internet » PHP »

Eliminar archivo de servidor despues de descargar

Estas en el tema de Eliminar archivo de servidor despues de descargar en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/01/2013, 17:28
 
Fecha de Ingreso: agosto-2012
Ubicación: Guanajuato
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 2
Información Eliminar archivo de servidor despues de descargar

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.
  #2 (permalink)  
Antiguo 19/01/2013, 17:56
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Eliminar archivo de servidor despues de descargar

Has comprobado si el time_limit de php es suficientemente bajo como para que salte antes de que termine la descarga?
  #3 (permalink)  
Antiguo 23/01/2013, 15:49
 
Fecha de Ingreso: agosto-2012
Ubicación: Guanajuato
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 2
Exclamación Respuesta: Eliminar archivo de servidor despues de descargar

Gracias por tu respuesta dashtrash.

Lo más cercano a 'time_limit' que encontre fue la directiva 'max_input_time', que determina la máxima cantidad de tiempo que cada script puede gastar analizando las peticiones de datos (traducido segun yo).

Quiero comentar que el valor que tenia cuando hice las pruebas de mi anterior post era de 60 segs. Lo cambié a 600 s y el archivo 3.1 MB por fin pudo ser eliminado despues de haber sido descargado.

Pero aún hay otra situacion que impide la eliminación de estos archivos, que es cuando el usuario cancela la descarga desde el navegador.

¿Cómo puedo hacerle?
  #4 (permalink)  
Antiguo 02/05/2013, 10:23
 
Fecha de Ingreso: agosto-2012
Ubicación: Guanajuato
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: Eliminar archivo de servidor despues de descargar

Hola de nuevo chavillos.

Lei por ahi donde no recuerdo que en linux es posible dar solución mediante el uso de un tal 'cron' que segun entiendo es como una simple tarea programada de windows. Pero no se ni por donde empezar para implementar algo como eso. Me pueden orientar con referencias?

... u2
  #5 (permalink)  
Antiguo 02/05/2013, 11:26
 
Fecha de Ingreso: septiembre-2007
Ubicación: Barcelona
Mensajes: 227
Antigüedad: 16 años, 7 meses
Puntos: 12
Respuesta: Eliminar archivo de servidor despues de descargar

Con la mayoria de los paneles de control puedes crear tareas cron desde en mismo panel (es un proceso muy intuitivo). En tu caso lo mejor es programar el cron para ejecutar un .sh (archivo .bat para linux) o ejecutar PHP pasando como parametro el script que se encarga de eliminar los archivos.
  #6 (permalink)  
Antiguo 03/05/2013, 07:54
 
Fecha de Ingreso: agosto-2012
Ubicación: Guanajuato
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: Eliminar archivo de servidor despues de descargar

Claro, y así verificar a determinado tiempo si hay archivos para eliminar, tal vez cada hora, tiempo suficiente para que los archivos involucrados dejen de ser usados. Pondre a trabajar estas ideas y te cuento.

Grax
  #7 (permalink)  
Antiguo 03/05/2013, 08:02
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Eliminar archivo de servidor despues de descargar

yo te recomiendo moverlo a la carpeta temporal antes de leerlo, así el mismo OS se encargará de su eventual eliminación y te evitas complicaciones
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: buffer, tamaño, zip
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:38.