Foros del Web » Programando para Internet » Jquery »

Problema con setinterval()

Estas en el tema de Problema con setinterval() en el foro de Jquery en Foros del Web. Hola, paso a comentarles mi problema; tengo un script que recarga un div determinado cada 5 minutos: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original < script ...
  #1 (permalink)  
Antiguo 12/03/2018, 14:30
 
Fecha de Ingreso: agosto-2009
Mensajes: 26
Antigüedad: 9 años, 3 meses
Puntos: 0
Pregunta Problema con setinterval()

Hola, paso a comentarles mi problema;

tengo un script que recarga un div determinado cada 5 minutos:

Código PHP:
Ver original
  1. <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
  2. <script>
  3.            var tiempo = 5 * 60000 ;  // Guardo el tiempo a usar en set_interval() en una variable
  4.             function recarga_auto(){
  5.  
  6.                                     $('main').load('pagina.php',function () {
  7.                                     $(this).unwrap();
  8.                                                                                 });
  9.                                     }
  10.                                     recarga_auto(); // This will run on page load
  11.                                    
  12.                                     //La siguiente funcion recarga el div main cada 5 minutos atraves de la funcion   itemxdefecto()
  13.                                   setInterval(function(){
  14.                                                             itemxdefecto() // this will run after every 5 minutes
  15.                                                             },tiempo );
  16.                                  
  17. </script>

Este codigo tiene en contra que al recargar la pagina, el tiempo declarado en setinterval() se resetea y vuelve a contar.
Quisiera que eso no suceda, que aunque haya recargado la pagina el contador siga contando y que se cargue el div cuando pasen realmente los 5 minutos aun habiendo recargado la pagina.

Se me ha ocurrido algo como esto, pero no se como integrarlo con setinterval():

Código PHP:
Ver original
  1. //capturamos la hora y le sumamos 5 minutos
  2.         $hsActual = date('H:i:s');  
  3.                 $nuevaHora = strtotime ( '+5 minute' , strtotime ( $hsActual ) ) ;
  4.                 $nuevaHora=date ( 'H:i:s' , $nuevaHora );
  5.                    
  6.                 if ($hsActual==$nuevaHora)  // Si las horas sin iguales quiere decir que avanzó 5 minutos.
  7.                 {
  8.                
  9.  
  10.  
  11.  
  12.                 }


Desde ya gracias por su ayuda.

pd: no me sirve poner una tarea cron.

Última edición por darkling_; 12/03/2018 a las 14:50
  #2 (permalink)  
Antiguo 12/03/2018, 17:15
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.470
Antigüedad: 10 años, 3 meses
Puntos: 184
Respuesta: Problema con setinterval()

A ver, se me ocurre tirar de esta propiedad guardando un timestamp cada vez que se ejecute la carga de la página.

https://developer.mozilla.org/es/doc...sessionStorage

Cuando se recarga la página se recupera ese valor si existe, se compara con el timestamp de ese momento y la diferencia en ms para llegar a los 5 minutos se establece como nuevo tiempo en el setInterval y finalmente se guarda el nuevo valor de timestamp en sesión.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 13/03/2018, 06:56
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 224
Antigüedad: 8 años, 2 meses
Puntos: 17
Respuesta: Problema con setinterval()

Usa cookies.

Y la cookie que se cree al recargar el div y que expire a los 5 minutos.
__________________
CHOOO COOO LAAA TEEEEEEEEE

Etiquetas: javascript, php
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:35.