Foros del Web » Programando para Internet » PHP »

Ejecutar consulta cada X tiempo

Estas en el tema de Ejecutar consulta cada X tiempo en el foro de PHP en Foros del Web. Explico brevemente, desde todas las paginas de mi sitio web hago una llamada a un popup que muestra el resultado de una consulta. La cosa ...
  #1 (permalink)  
Antiguo 26/12/2007, 17:42
pr0
 
Fecha de Ingreso: marzo-2004
Mensajes: 687
Antigüedad: 20 años
Puntos: 28
Ejecutar consulta cada X tiempo

Explico brevemente, desde todas las paginas de mi sitio web hago una llamada a un popup que muestra el resultado de una consulta. La cosa es que ese popup lo ideal es que solo me lo muestre cuando la consulta devuelva resultado por ejemplo:
Código PHP:
SELECT FROM tareas WHERE terminada=AND usuario='pepe'
con esta consulta, miro si hay tareas no terminadas para el usuario pepe. Si encuentra alguna sin terminar, me muestra el popup con dicho resultado, sino pues no muestra el popup. A esto habría que añadirle que me gustaria que dicha consulta se ejecute sola cada 5 o 10 minutos sea la pagina que sea por la que esté navegando el usuario.

¿Cual sería la manera mas optima sin sobrecargar mucho el navegador y demas?
He pensado hacerlo con un setTimeOut() de javascript pero no se no se...


Saludos!
  #2 (permalink)  
Antiguo 26/12/2007, 17:49
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Ejecutar consulta cada X tiempo

Me suena que he respondido a algo parecido esta mañana, pero creo que era en el foro de JavaScript.

Si lo quieres hacer con PHP, sólo podrás controlar que se ejecute cuando se recargue la página.
Para que se ejecute cada x tiempo, independientemente de si el usuario recarga la página o no, sería con AJAX.

Si no quieres usar AJAX (que sería lo más correcto y bonito), con php puedes hacer que se ejecute en cada página, no creo que entonces tenga mucho sentido lo de los cinco minutos, no obstante, si quieres hacerlo cada x tiempo, puedes guardar la hora de la última consulta. Pero eso te obligaría ha realizar una consulta para ver ese dato, por lo que, no sólo no ahorrarías querys, sino que se saturaría aún más.

En resumen, mi opinión personal es que lo hagas con AJAX. Y si lo haces con php, que se ejecute siempre al cargar una página.
  #3 (permalink)  
Antiguo 26/12/2007, 18:07
pr0
 
Fecha de Ingreso: marzo-2004
Mensajes: 687
Antigüedad: 20 años
Puntos: 28
Re: Ejecutar consulta cada X tiempo

Muchas gracias por responder Keysher.

La verdad ke me gusta mucho la idea de probar en AJAX pero si te soy sincero, no tengo ni pajolera idea de como va.
¿Me recomiendas algo para leer y poder hacerme una idea de como conseguir lo que busco?

Muchas gracias, saludos!
  #4 (permalink)  
Antiguo 26/12/2007, 18:21
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 18 años, 9 meses
Puntos: 3
Re: Ejecutar consulta cada X tiempo

ajax, usar ajax para eso no seria bueno,
seria buenocrear un cronjon o usar la libreria CURL..
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #5 (permalink)  
Antiguo 26/12/2007, 18:49
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: Ejecutar consulta cada X tiempo

Supongo que la respuesta es (como casi siempre) depende.

Si este es un proceso que sólo quieres ejecutar mientras que un usuario tenga abierta una página, entonces lo mejor podría ser un Ajax.... en cualquier otro caso un Cron
  #6 (permalink)  
Antiguo 26/12/2007, 19:03
pr0
 
Fecha de Ingreso: marzo-2004
Mensajes: 687
Antigüedad: 20 años
Puntos: 28
Re: Ejecutar consulta cada X tiempo

Gracias vevni y pragone por vuestras ideas.

La verdad es que estoy empezando a plantearlo con Ajax ya ke en realidad solo kiero ke se ejecute cuando el usuario este navegando por el sitio web por lo tanto un CRON lo veo algo complejo para lo que la situacion requiere.

Finalmente como ya he dicho me he decantando por Ajax y espero conseguirlo, aun asi aprovecho para hacer una ultima pregunta.

¿hay alguna manera de detectar si se ha insertado o cambiado algun dato de una tabla MySQL?
Pregunto esto porke seria perfecto el ke pudiera ejecutar la consulta solamente cuando se haya insertado un nuevo registro en la tabla.


Gracias de nuevo amigos.
  #7 (permalink)  
Antiguo 27/12/2007, 02:22
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Ejecutar consulta cada X tiempo

Tal y como está planteado no creo que un cron job sea lo más útil. Hay que tener en cuenta que lo que quiere es que se le avise al usuario que está navegando, ¿Qué sentido tiene un cron que se ejecute cada cinco minutos? Lo ideal es que sólo se ejecute cuando el usuario esté logueado en el sistema, y será una consulta sólo para ese usuario en concreto. Vamos, que no le veo sentido a un cron job. Serían hacer cientos de consultas inutiles, cuando sólo hay que hacerlas en el momento que el usuario esté logueado, y en caso de devolver algún resultado, mostrarle un aviso a ESE usuario mientras está navegando.

Sigo pensando en las dos opciones:
- PHP cada vez que se recarga la página (no es en tiempo real, aunque se ahorran consultas a la base de datos)
- AJAX, más elegante, práctico, en tiempo real, aunque hay que hacer muchas más consultas.

Con respecto a la pregunta, no sé si habrá alguna manera de "monitorizar" cambios en la BDD pero de haberlo supongo que sería consultando a la propia BDD, por lo que tampoco ahorrarías mucho. De todos modos es interesante saber si existe eso.
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 10:33.