Foros del Web » Programando para Internet » PHP »

Actualizando datos de pantalla periodicamente

Estas en el tema de Actualizando datos de pantalla periodicamente en el foro de PHP en Foros del Web. Me encuentro desarrollando un sistema de turnos, donde un cliente llega, pide un número y se sienta a esperar ser llamado. Al momento que se ...
  #1 (permalink)  
Antiguo 07/11/2012, 11:58
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Actualizando datos de pantalla periodicamente

Me encuentro desarrollando un sistema de turnos, donde un cliente llega, pide un número y se sienta a esperar ser llamado.

Al momento que se llame un nuevo numero la pantalla que los muestra deberia cambiar.

Mi problema radica en la pantalla que muestra los números, no se me ocurre una manera eficiente de ir actualizando los datos de la misma. Recargar la pagina no parece una opción viable.

Hacer un interval en js, para llamar por ajax preguntando por nuevos numeros requeriria muchisimas consultas.

Se les ocurre alguna manera que se me este escapando?
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #2 (permalink)  
Antiguo 07/11/2012, 12:29
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Actualizando datos de pantalla periodicamente

Lo más fácil, loong polling.

Una consulta se envía al servidor, si éste no tiene datos, "duerme" un tiempo para volver a consultar. Cuando haya datos, devuelve la consulta.

Tengo un chat implementado así:

cliente js hace una llamada ajax al servidor, el servidor recibe la petición y hace algo como esto:

Código PHP:
Ver original
  1. set_time_out(215);//permitimos que el proceso tarde en responder.
  2. $x=0;
  3. while($x<70){//ejecutamos hasta 70 veces este proceso.
  4.     if($datos=hay_datos())//si hay datos
  5.         return $datos;//regresamos datos, el cliente los recibe y hace otra llamada
  6.     sleep(3);//si no hay datos, dormimos 3 segundos
  7.     $x++;//aumentamos el contador, si no hubiera datos, se hará el ciclo 70*3= 210 segundos
  8. }
  9. return $vacio;//luego de 210 seg. regresamos la llamada vacía para que no caiga la conexión, y se haga otra petición.

Esto asegura un retardo máximo de tres segundos entre respuestas, y no satura al servidor de peticiones.
  #3 (permalink)  
Antiguo 07/11/2012, 12:47
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: Actualizando datos de pantalla periodicamente

Voy a mirar un poco esta idea, gracias.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #4 (permalink)  
Antiguo 07/11/2012, 12:51
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Actualizando datos de pantalla periodicamente

AJAX con un setInterval <-- Funcional pero no tan recomendado
Websockets con Node o Pusher <--- Funcional, mas rápido y 100% recomendado

Saludos
  #5 (permalink)  
Antiguo 08/11/2012, 07:49
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: Actualizando datos de pantalla periodicamente

Cita:
Iniciado por abimex Ver Mensaje
AJAX con un setInterval <-- Funcional pero no tan recomendado
Websockets con Node o Pusher <--- Funcional, mas rápido y 100% recomendado

Saludos
Ajax con setinterval es lo que mencionaba antes que no me sirve, por la cantidad de querys que tendria que realizar, son aproximadamente 700 clientes funcionando continuamente, y el error no puede ser mayor a 5 segundos.

Voy a leer sobre Websockets y luego comento mi experiencia, gracias.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #6 (permalink)  
Antiguo 08/11/2012, 11:13
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: Actualizando datos de pantalla periodicamente

Pusher es exactamente lo que buscaba, pero alternativas libres? o trabajarlo localmente en el servidor sin tener que conectar a ninguna api externa.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #7 (permalink)  
Antiguo 16/11/2012, 01:55
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Actualizando datos de pantalla periodicamente

puedes programar el servidor con nodejs, es muy facil

Etiquetas: pantalla
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 06:33.