Foros del Web » Programando para Internet » PHP »

Borrar registros antiguos con php y mysql

Estas en el tema de Borrar registros antiguos con php y mysql en el foro de PHP en Foros del Web. Os explico lo que estoy tratando de hacer, a ver si alguien me sabe decir dónde está el problema. Cuando un usuario se loguea en ...
  #1 (permalink)  
Antiguo 16/12/2012, 05:07
 
Fecha de Ingreso: abril-2012
Mensajes: 63
Antigüedad: 12 años
Puntos: 2
Borrar registros antiguos con php y mysql

Os explico lo que estoy tratando de hacer, a ver si alguien me sabe decir dónde está el problema.

Cuando un usuario se loguea en la web, se le da de alta en la tabla Online, y entre otros datos se registra con NOW() en formato datetime la fecha y hora en que se loguea, en el campo "hora"

Cada treinta segundos, a través de un timer, se actualiza la fecha mientras el usuario sigue logueado. Si el usuario ya ha abandonado la aplicación, obviamente no se actualizan los datos de tiempo.
En el mismo lapso de tiempo (30 segundos) le paso otra función que debería borrar de la tabla Online todos los usuarios cuyo campo hora lleve al menos un minuto sin actualizar (que hayan abandonado la aplicación, vamos). Entonces hago esta consulta:

Código MySQL:
Ver original
  1. "DELETE FROM Online
  2.                  WHERE hora < (NOW() - INTERVAL 1 MINUTE)";

Pero no me borra los registros antiguos. Probé también con DATE_SUB, pero nada.

¿Qué estoy haciendo mal?
  #2 (permalink)  
Antiguo 16/12/2012, 08:16
 
Fecha de Ingreso: septiembre-2010
Ubicación: Corrientes - Argentina
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 2
Respuesta: Borrar registros antiguos con php y mysql

Un poco mas de información, por favor...
__________________
Si esta vida te da la espalda, siempre puede tocarle el c...
  #3 (permalink)  
Antiguo 16/12/2012, 10:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Borrar registros antiguos con php y mysql

Se me ocurre al menos dos formas de lograrlo.
Podría ser esta:
Código MySQL:
Ver original
  1. DELETE FROM Online
o bien
Código MySQL:
Ver original
  1. DELETE FROM Online
  2. WHERE TIMESTAMPDIFF(hora, NOW(), MINUTE) >= 1

Respecto de la primera, ya que según dices:
Cita:
Probé también con DATE_SUB, pero nada.
Tengo la duda de si realmente la escribiste bien.
Además, ¿has tenido en cuenta que las horas que se registran, siendo DATETIMES, pueden ser las locales del usuario (TMZ), mientras que NOW() opera con la local del servidor?
Eso puede llevar a casos como que la hora del servidor sea una o más horas anteriores a la hora registrada por el usuario (imaginemos Chihuahua, México - Rosario, Argentina - Madrid, España. Con usos -7, -3 y 1+). Eso puede tener un impacto erróneo en lo que quieres hacer.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 16/12/2012 a las 10:52

Etiquetas: mysql, registros, tabla, usuarios
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 05:26.