Foros del Web » Programando para Internet » PHP »

Contador Tiempo Real

Estas en el tema de Contador Tiempo Real en el foro de PHP en Foros del Web. Han visto alguna vez el juego ogame?? imperia online?? http://www.ogame.com.es/ // http://www.imperiaonline.org Ambos juegos (y me imagino tambien que otros) poseen un sistema sencillo de ...
  #1 (permalink)  
Antiguo 04/02/2008, 19:21
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 19 años, 11 meses
Puntos: 1
Contador Tiempo Real

Han visto alguna vez el juego ogame?? imperia online??

http://www.ogame.com.es/ // http://www.imperiaonline.org

Ambos juegos (y me imagino tambien que otros) poseen un sistema sencillo de explicar:

Uno realiza una tarea (por ejemplo la construccion de un edificio) en donde el sistema te avisa que demora un minuto (01:00) entonces te deja un contador que empieza con la cuenta regresiva hasta llegar a 0 y luego un aviso de "Continuar".

Resulta que este sistema en tiempo real es para todos los jugadores, entonces lo unico que se me ocurre es que hay una base de datos (MySQL) que esta segundo a segundo realizando todos los querys.

La pregunta es: ¿Probablemente sea asi el sistema? ¿Alquien sabe? Si fuese asi, ¿como se puede hacer eso?

Grax!
  #2 (permalink)  
Antiguo 04/02/2008, 19:38
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 19 años, 11 meses
Puntos: 1
Re: Contador Tiempo Real

Bueno, la verdad es que queria borrar este post y no pude... asi que me auto-actualizo y estoy viendo la funcion CRON para hacer de manera eficiente el sistema.

se supone que muchos usuarios estarian actualizando cada segundo... no?....
  #3 (permalink)  
Antiguo 15/02/2008, 19:14
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 19 años, 11 meses
Puntos: 1
Re: Contador Tiempo Real

bueno, sigo con este blog jajaja

resulta que la solucion por "CRON" es complicada ya que no poseo un sistema UNIX y por lo general cuando hospedas una página no te dan derecho a manejar sus sistemas, ¿no?

alguien tiene alguna solucion?

la unica que encontre es la mas engorrosa: dejar una pagina que se actualice cada 1 segundo con javascript, la cual en codigo PHP se verifica en cada refresh que la resta entre el contador de dias/horas/minutos/segundos y el tiempo actual sea 0, y que cuando sea 0 dependiendo de la instruccion, que se ejecute.

lo unico eficiente que encuentro es que se haga un trigger.

alguien sabe o se le ocurre algo mas eficiente?

grax!
  #4 (permalink)  
Antiguo 07/03/2008, 09:43
 
Fecha de Ingreso: febrero-2007
Mensajes: 74
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Contador Tiempo Real

Puedes hacer fácilmente un contador con Javascript. A partir de una cantidad inicial se va disminuyendo y cuando llegue a 0 recargas la página o simplemente muestras un mensaje con Javascript que ponga "Continuar". Así no torturas al servidor que bastante trabajo va a tener ya en un juego como ese.

Saludos.
  #5 (permalink)  
Antiguo 07/03/2008, 11:19
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Re: Contador Tiempo Real

podes poner un contador con horas y minutos y segundos y de ahi extraer el tiempo para tener en cuenta tu tiempo real

Código HTML:
<!--  Incicio HORA Y FECHA -->
        
        
    <script language="javascript">
// Muestra la hora y la fecha, actualizandas cada segundo, en una caja de texto


//Muestra segundos
function muestraSeg()
  {
  hoyseg=new Date();
  document.formi.seg.value=hoyseg.getSeconds();
  setTimeout("muestraSeg()",1000);
  }

//Muestra minutos
function muestraMin()
  {
  hoymin=new Date();
  document.formi.min.value=hoymin.getMinutes();
  setTimeout("muestraMin()",1000);
  }

//Muestra horas
function muestraHour()
  {
  hoyhour=new Date();
  document.formi.hour.value=hoyhour.getHours();
  setTimeout("muestraHour()",1000);
  }

//Muestra día
function muestraDay()
  {
  hoyday=new Date();
  document.formi.day.value=hoyday.getDate();
  setTimeout("muestraDay()",1000);
  }

//Muestra mes
function muestraMon()
  {
  hoymonth=new Date();
  document.formi.month.value=hoymonth.getMonth();
  
  if(document.formi.month.value==0){
   document.formi.month.value="Enero"
  }else if(document.formi.month.value==1){
   document.formi.month.value="Febrero"
  }else if(document.formi.month.value==2){
   document.formi.month.value="Marzo"
  }else if(document.formi.month.value==3){
   document.formi.month.value="Abril"
  }else if(document.formi.month.value==4){
   document.formi.month.value="Mayo"
  }else if(document.formi.month.value==5){
   document.formi.month.value="Junio"
  }else if(document.formi.month.value==6){
   document.formi.month.value="Julio"
  }else if(document.formi.month.value==7){
   document.formi.month.value="Agosto"
  }else if(document.formi.month.value==8){
   document.formi.month.value="Septiembre"
  }else if(document.formi.month.value==9){
   document.formi.month.value="Octubre"
  }else if(document.formi.month.value==10){
   document.formi.month.value="Noviembre"
  }else{
   document.formi.month.value="Diciembre"
  }
  
  setTimeout("muestraMon()",1000);
  }

//Muestra semana
function muestraSem()
  {
  hoysem=new Date();
  document.formi.sem.value=hoysem.getDay();
  
  if(document.formi.sem.value==0){
   document.formi.sem.value="Domingo"
  }else if(document.formi.sem.value==1){
   document.formi.sem.value="Lunes"
  }else if(document.formi.sem.value==2){
   document.formi.sem.value="Martes"
  }else if(document.formi.sem.value==3){
   document.formi.sem.value="Miércoles"
  }else if(document.formi.sem.value==4){
   document.formi.sem.value="Jueves"
  }else if(document.formi.sem.value==5){
   document.formi.sem.value="Viernes"
  }else{
   document.formi.sem.value="Sábado"
  }
  setTimeout("muestraSem()",1000);
  }

//Muestra año
function muestraYear()
  {
  hoyyear=new Date();
  document.formi.year.value=hoyyear.getFullYear();
  
  if ((document.formi.hour.value==0)&&(document.formi.min.value==0)&&(document.formi.seg.value==0)&&(document.formi.day.value==1)&&(document.formi.month.value=="Enero"))
  	{
  	alert("Feliz año " + document.formi.year.value);
  	return true;
  	}
  setTimeout("muestraYear()",1000);
  }

    </script>



<!-- Muestra el formulario con la hora y la fecha -->
<FORM name="formi">
<P align="right">Fecha:
<INPUT type="text" name="sem" size=8> ,
<INPUT type="text" name="day" size=1> de
<INPUT type="text" name="month" size=9> de
<INPUT type="text" name="year" size=3>&nbsp;&nbsp;&nbsp; Reloj:
<INPUT type="text" name="hour" size=1> :
<INPUT type="text" name="min" size=1> :
<INPUT type="text" name="seg" size=1>&nbsp;&nbsp; </P>

<SCRIPT language="javascript">
muestraSeg();
muestraMin();
muestraHour();

muestraSem();
muestraDay();
muestraMon();
muestraYear();
</SCRIPT>
</FORM>



<!--  Final HORA Y FECHA --> 
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 09:45.