Eliminar un fichero creado con PHP después de un tiempo

Hola, estoy haciendo lo siguiente. Envío un email donde aparece un enlace a un archivo creado automáticamente mediante php. Me gustaría que...

La FAQ Eliminar un fichero creado con PHP después de un tiempo tiene

Pertenece a la categoría:
Pregunta
Hola, estoy haciendo lo siguiente.
Envío un email donde aparece un enlace a un archivo creado automáticamente mediante php.
Me gustaría que cuando pasase 30 mintuso de la creación del archivo se eliminase automáticamente.

La idea es enviar un mail y que haya en este una dirección de enlace para activar una zona privada de una web. Entonces si no se pincha sobre ese enlace que deje de estar operativo, es decir, que el archivo al que enlaza se elimine.

¿Es posible? ¿Se os ocurre alguna otra manera?

Muchas gracias.
Respuesta de Ricardo Grandon
no se si sea de mucha ayuda pero se me ocurren 2 formas asi a lo rapido
1 es que guardes en una base de datos los archivos (las rutas) y con un
crontab en la misma maquina despues ejecupes un pl o script que lea y
borre cada 30 min..

lo otra es usar directamente el crontab para cada 30 min eliminar el
directorio completo dnd las creas y crear denuevo la nueva carpeta y
enviar los mails con otro script pl o bin ...

algo asi se me ocurre como solución :)
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios

engendrone

05/1/2010
Caducidad
Se me ocurre que puedes poner una caducidad en la liga del correo. Yo haria esto; al momento de enviar el correo tomo el timestamp del servidor y lo agrego como una variable GET en la url, de modo que cuando se haga clic en la liga se mande el timestamp a un script en el servidor (PERL, PHP, etc). Al momento de recibir la caducidad puedes determinar si ya pasaron los 30 minutos; si ya pasaron borras el archivo, si no han pasado lo mandas al navegador

Pakos

05/1/2010
Opcion Mas Segura
creo q la solucion engendr es buena pero no es segura ya q envias el timestap en la URL y un parametro GET es modificable x el usuario, lo q te recomendaria es q guardaras la hr en q se envia el email en un tabla en tu bd, y crearas uid's para q estos los envies en la url, al abrir el link del email, verificas el uid y consulta la hora limite si esta ya paso, ves si los archivos existen si existen los eliminas y niengas el acceso, si ya se eliminaron solo niegas el acceso, si aun esta esta a tiempo pues no haces mas q mostrar los archivos q necesite, este metodo es viable pero no se eliminan los archivos automaticamente si no q hasta q se intenten ver se verifica la hr y su existencia y se decide si mostrar o no el archivo, esto esta bien si no tienes acceso a arrancar un script en el server q este checando el tiempo transcurrido, la gran deficiencia de PHP es q no cuenta con hislos como JSP o ASP :(

YOLED

07/1/2010
Unión de ambos métodos.
Hola.

Lo que te sugiero es unir los dos conceptos expresados anteriormente.

.- Envías el enlace con el UID.
.- Creas un registro con el UID y la hora de envío del enlace.
.- Si para el momento de pulsar click, han transcurrido más de 30 minutos desde la grabación del registro, eliminas el archivo que tiene el registro con el UID y restringes el acceso.
.- El Cron es un script de PHP que leerá de las bases de datos los registros con más de 30 minutos y los eliminará, y puedes colocar el Cron a que se ejecute cada 30 minutos.
.- El Cron deberás colocarlo de forma que no tenga que leer todos los registros de la tabla sino sólo aquellos que tengan más de 30 minutos de creados.

------------------------------
YOLED
http://www.yoled.com
Cabudare - Lara - Venezuela
------------------------------
FAQ relacionadas
Volver al árbol de categoríasVolver al árbol de categorías