Foros del Web » Programando para Internet » PHP »

Realizar auto-limpieza

Estas en el tema de Realizar auto-limpieza en el foro de PHP en Foros del Web. Hola a todos. Quizás mi pregunta tiene más que ver con Sql, pero la pongo aquí por no encontrar la sección adecuada ya que tiene ...
  #1 (permalink)  
Antiguo 16/08/2005, 12:44
 
Fecha de Ingreso: agosto-2005
Mensajes: 2
Antigüedad: 19 años, 3 meses
Puntos: 0
Mensaje Realizar auto-limpieza

Hola a todos. Quizás mi pregunta tiene más que ver con Sql, pero la pongo aquí por no encontrar la sección adecuada ya que tiene que ver con una página realizada en php. Lo que me interesa saber es como hacer para que, una tabla dada se borre automáticamente en base a un criterio en Sql. ¿Utilidad? Permitir una baja cuota para mensajes privados (no se tiene una gran base de datos o se desea emplear el espacio en otras cosas) y además que cada uno de estos se borren automáticamente al transcurrir un tiempo dado, por ejemplo, cuando su "edad" sea superior a 7 días. Gracias por sus respuestas y atención.
  #2 (permalink)  
Antiguo 16/08/2005, 13:08
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Esta instruccion borra todos los registros que tengan mas de 7 dias (comparados con hoy), es para mysql, y funciona sólo desde la version 4.1.1 en adelante.

delete from tabla where datediff(now(),campo_fecha)>7;
  #3 (permalink)  
Antiguo 16/08/2005, 14:20
 
Fecha de Ingreso: agosto-2005
Mensajes: 2
Antigüedad: 19 años, 3 meses
Puntos: 0
Pero esa instruccion ¿hay que ejecutarla cada vez que quieres? La idea es despreocuparte de no ejecutar ningun archivo... no sé ¿incluirla en alguna de las partes que siempre se ejecutan de la web? Si no te es molestia asesorarme... Es que yo si que habia pensado en un archivo que se encarge de eliminar dichos mensajes, pero la idea era algo más "automático" y como poco es lo que sé de Sql....
  #4 (permalink)  
Antiguo 16/08/2005, 14:30
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Hay dos formas de "automatizar" la acción:

1) Incrustar el código que se encarga de borrar dichos registros dentro delcódigo de tu página (podría ser solo el index, pordría ser en todas). Con esto dejas el trabajo se realize cada que alguien visite tu sitio... depende del número de visitas que tengas por lo tanto podrías no asegurar se realize la acción.

2) Utilizar CRON JOB si usas LINUX ó el Administrador de Tareas si usas Windows. El tema entonces no corresponde a PHP sino a tu servicio de hosting y su respectivo Sistema Operativo.

Lo que hacen estas aplicaciones es ejecutar "algo" cada cierto tiempo... así pués tú haces tu archivo .php que te altere tu BD (en tu caso que te borre registros si han pasado de cierto tiempo) y solo lo corres el tiempo que lo consideres necesario (1 vez al día, cada X horas, cada X minutos...).

Si cuentas con Cpanel es probable que tengas una sección que te lleve a configurar el Cron Job, su uso es de lo más sencillo (repito: Cpanel) solo hubicas el archivo y marcas el intervalo para su ejecución en un listbox que viene ahí mismo...

Como dije, para la segunda opción es tema de tu hosting, igual puede ser el caso que no tengas la opción en tu Panel de Administración respectivo, entoces consulta a tu proovedor si puede configurarlo... el servicio deben de dartelo.

Para la primera opción... bueno, nada complicado; un include y listo. Supongo no tendrás problemas.

Un saludo!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 16/08/2005, 14:32
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Yo te dí el comando sql necesario, con eso tienes todo. Para hacerlo automatico puedes ejecutar esta sentencia sql desde php cada vez que ingresas al script en que revisas los mensajes privados, en el login del foro o donde tu quieras. Ejemplo:

Código PHP:
<?php
   $sql
="delete from tabla where datediff(now(),campo_fecha)>7";
   
mysql_query($sql,$link);
?>
PD: el hecho de que la consulta se ejecute muchas veces no te provoca error, ya que siempre borrará los registros que cumplan la condicion, si ninguno la cumple, no borra nada.
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 21:20.