Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Cierto evento cada 24 horas

Estas en el tema de Cierto evento cada 24 horas en el foro de Mysql en Foros del Web. Hola verán tengo un problema que no consigo solventar. Dispongo de un seguido de usuarios. De la forma siguiente: | Usuario | tiempo | rss ...
  #1 (permalink)  
Antiguo 05/10/2013, 05:52
 
Fecha de Ingreso: mayo-2008
Mensajes: 315
Antigüedad: 15 años, 11 meses
Puntos: 7
Cierto evento cada 24 horas

Hola verán tengo un problema que no consigo solventar.
Dispongo de un seguido de usuarios.
De la forma siguiente:
| Usuario | tiempo | rss | intentos_rss |
x y z w

De forma que guardo el tiempo de la ultima actualización de su RSS, y cada 24 horas, debo comprobar si ha realizado alguna modificación:
- Si ha realizado alguna modificación inserto los datos del RSS mediante un fichero php, y actualizo los tiempos y= tiempoActual.
- Si no se ha realizado ninguna modificación, no realizo ninguna operación pero incremento el tiempo y=tiempoActual.
- Si el rss no es valido incremento w+=1.

Finalmente muestro los datos al cliente.

Esto lo realizo con 3 consultas a la base de datos:
-Obtengo los usuarios y dentro de cada uno si existe un nuevo campo lo añado
-Finalmente muestro los datos

El problema que tengo esque tengo dos consultas anidadas, es decir, en el bucle donde obtengo los usuarios llamo a otra función que añade los datos.

Hay alguna forma de generar un evento automáticamente que el propio servidor Mysql sea capaz de comprobar si algún usuario lleva mas de 24 sin actualizarse y llamar un archivo php.

Muchas Gracias.
PD: Todo esto lo tengo solucionado mediante PHP, pero me parece poco optimo si el volumen de datos es grande. Además que la petición de actualizar los rss los hace el cliente
  #2 (permalink)  
Antiguo 05/10/2013, 06:05
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: Cierto evento cada 24 horas

Cita:
Hay alguna forma de generar un evento automáticamente que el propio servidor Mysql sea capaz de comprobar si algún usuario lleva mas de 24 sin actualizarse y llamar un archivo php.
Técnicamente si en lo de "automático": EVENT (ver manual de referencia).

Pero lo referente al "archivo PHP"... MySQL no puede ejecutar nada, porque no es un cliente, es un servidor.
Lo que sí pude hacer es tomar datos de un archivo plano (un .CSV, por ejemplo), para cargarlos en una tabla, pero infortunadamente MySQL no permite hacer esa tarea en un stored procedure, por lo que no podrás usarla.
Deberás resolverlo a otro nivel, por ejemplo con jobs en el servidor web.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 05/10/2013, 06:13
 
Fecha de Ingreso: mayo-2008
Mensajes: 315
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Cierto evento cada 24 horas

De acuerdo, muchísimas gracias.
Yo pensaba hacerlo a nivel de Base de datos por si había alguna forma de llamar a un evento cuando un usuario cumplía cierta condición (usuario.tiempo_rss+24h < tiempo_actual).
Ya que programar un evento / job, supone actualizarlos todos a la vez y como son rss, debe acceder a cada web para obtener los datos y desconozco si ese tiempo es muy elevado.

De todos modos miraré si puedo hacer algo respecto cron jobs.
  #4 (permalink)  
Antiguo 05/10/2013, 06:32
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: Cierto evento cada 24 horas

Cita:
Ya que programar un evento / job, supone actualizarlos todos a la vez y como son rss, debe acceder a cada web para obtener los datos y desconozco si ese tiempo es muy elevado.
Creo que no lo estás viendo correctamente.
Que lo hagas en un job, no implica necesariamente que se actualicen todos. Depende de lo que ese job ejecute, y si lo que ejecuta es una "miniaplicación", por ejemplo, que realice la tarea que quieres, pero interactuando con la base... Bien podría servir, ¿no te parece?
Piensalo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 05/10/2013, 08:45
 
Fecha de Ingreso: mayo-2008
Mensajes: 315
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Cierto evento cada 24 horas

Ya lo he solventado. Lo que hago es lo siguiente:
- Lanzo un archivo.php mediante un cron jobs cada 6 horas, este comprueba quien ya lleva 24 horas sin actualizarse de forma que tienes el margen de 24h<x<30h donde se actualizarán los posts del usuario.
  #6 (permalink)  
Antiguo 05/10/2013, 09:15
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: Cierto evento cada 24 horas

Me alegra que encontraras la solución.
En realidad es un problema que sólo he visto en MySQL, por cuanto Oracle y SQL Server, por ejemplo, cuentan con herramientas adicionales que permiten hacer ese tipo de cosas, además de tener recursos añadidos para leer y escribir archivos planos, incluso desde SP.
Pero como son cosas fuera del estándar ANSI SQL, no todos los DBMS las tienen.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: cada, campo, evento, horas, insert, php, sql
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 07:03.