Foros del Web » Programando para Internet » PHP »

Evitar parpadeo al actualizar

Estas en el tema de Evitar parpadeo al actualizar en el foro de PHP en Foros del Web. Buenas tardes a todos. Estoy intentando actualizar una pagina cada segundo pero que no me haga el molesto parpado en blanco. Lo que hace el ...
  #1 (permalink)  
Antiguo 05/05/2015, 05:48
todasontodas
Invitado
 
Mensajes: n/a
Puntos:
Evitar parpadeo al actualizar

Buenas tardes a todos.

Estoy intentando actualizar una pagina cada segundo pero que no me haga el molesto parpado en blanco.

Lo que hace el código es usar la api de google para generar una esfera con una aguja, y me gustaría que solo se moviera la aguja cuando se actualizar, no ese molesto parpadeo

El codigo es el siguiente:

Código PHP:
<html>
  <head>
<!--        <meta http-equiv="refresh" content="2" > refresco web -->
        <title>PUE</title>
  </head>
  <body>
    <?php

    $resultado
system('/etc/nagios3/scrips/pue');

    
?>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">

          var valor = "<?php echo ($resultado); ?>" ;

          google.load("visualization", "1", {packages:["gauge"]});
          google.setOnLoadCallback(function() { drawChart(valor); });

      function drawChart(valor) {

//                valor = parseInt(valor);
                valor = parseFloat(valor);
        var data = google.visualization.arrayToDataTable([
          ['Label', 'Value'],
          ['PUE', valor],
        ]);

        var options = {
          width: 400, height: 140,
          redFrom: 3, redTo: 4,
          yellowFrom:2, yellowTo: 3,
          greenFrom: 0, greenTo: 2,
          min: 0, max: 4,
          minorTicks: 5
        };

        var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
        chart.draw(data, options);

      }
    </script>
        <center><div id="chart_div" style="width: 400px; height: 140px;"></div></center>
  </body>
</html>


¿Alguien me echa una mano por favor?

Saludos y gracias
  #2 (permalink)  
Antiguo 05/05/2015, 07:18
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Evitar parpadeo al actualizar

Puedes usar ajax, busca por long polling.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 05/05/2015, 08:37
todasontodas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evitar parpadeo al actualizar

La cosa es que estoy perdido en ajax, ¿sabrias como implementarlo al codigo?
  #4 (permalink)  
Antiguo 05/05/2015, 08:59
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Evitar parpadeo al actualizar

Si desconoces sobre el tema te sugiero que realices esta pregunta en el foro de javascript
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 05/05/2015, 14:45
todasontodas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evitar parpadeo al actualizar

Solicite la ayuda pero tampoco veo que me puedan ayudar
¿Alguien me echa una mano?

Saludos
  #6 (permalink)  
Antiguo 05/05/2015, 15:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Evitar parpadeo al actualizar

Cita:
Iniciado por todasontodas Ver Mensaje
Solicite la ayuda pero tampoco veo que me puedan ayudar
¿Alguien me echa una mano?

Saludos
Si te animas a publicar en el lugar correcto seguro alguien te ayuda.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 06/05/2015, 00:11
todasontodas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evitar parpadeo al actualizar

La cosa es que allí ni siquiera me dado alguna pista. Pensaba que era algo no tan dificil de solucionar.
No me queda otra que darle vueltas yo.
  #8 (permalink)  
Antiguo 06/05/2015, 08:51
 
Fecha de Ingreso: junio-2009
Mensajes: 101
Antigüedad: 15 años, 6 meses
Puntos: 13
Respuesta: Evitar parpadeo al actualizar

Deberías especificar más como usas cada variable y si cambian en el tiempo o definir el objetivo de recargar la página de ésta forma. Si lo he entendido bien sería esto lo que quieres:

Código Javascript:
Ver original
  1. //$.get() Requiere de la librería JS jQuery
  2.     var options = {                     //Variable fija, no hace falta declararla cada vez que se ejecuta la función drawChart.
  3.         width: 400, height: 140,
  4.         redFrom: 3, redTo: 4,
  5.         yellowFrom:2, yellowTo: 3,
  6.         greenFrom: 0, greenTo: 2,
  7.         min: 0, max: 4,
  8.         minorTicks: 5
  9.     };
  10.        
  11.     function drawChart() {
  12.         var valor = parseFloat($.get("file.php")); //Fichero PHP que imprime en pantalla el valor de $resultado; (SOLO SI $RESULTADO ES VARIABLE).
  13.         var data = google.visualization.arrayToDataTable([['Label', 'Value'],['PUE', valor],]);
  14.         var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
  15.         chart.draw(data, options);
  16.     }
  17.    
  18.     reload = setInterval(drawChart(), 2000);

Te advierto que recargar la página de ésta manera podría suponer a medio-largo plazo que se sature el navegador o empiece a utilizar más memoria RAM de lo normal.
  #9 (permalink)  
Antiguo 07/05/2015, 02:54
todasontodas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evitar parpadeo al actualizar

Muchas gracias por la ayuda pero no me funciono. Te explico un poco el codigo para ver si asi comprendes mejor lo que quiero conseguir, añadi lo tu codigo asi vaya a ser que lo añadiera mal:

Código PHP:
<html>
  <head>
        <title>PUE</title>
  </head>
  <body>
    <?php

    $resultado
system('/etc/nagios3/scrips/pue'); //la variable obtiene un numero de un scrips que va variando cada vez que se refresca la pagina

    
?>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">

          var valor = "<?php echo ($resultado); ?>" ;

          google.load("visualization", "1", {packages:["gauge"]});
          google.setOnLoadCallback(function() { drawChart(valor); });

      var options = {                     //Variable fija, no hace falta declararla cada vez que se ejecuta la función drawChart.
        width: 400, height: 140, 
        redFrom: 3, redTo: 4, 
        yellowFrom:2, yellowTo: 3, 
        greenFrom: 0, greenTo: 2, 
        min: 0, max: 4, 
        minorTicks: 5 
    };
        
    function drawChart() { 
        var valor = parseFloat($.get("file.php")); //Fichero PHP que imprime en pantalla el valor de $resultado; (SOLO SI $RESULTADO ES VARIABLE).
        var data = google.visualization.arrayToDataTable([['Label', 'Value'],['PUE', valor],]); 
        var chart = new google.visualization.Gauge(document.getElementById('chart_div')); 
        chart.draw(data, options); 
    } 
    
    reload = setInterval(drawChart(), 2000);
    </script>
        <center><div id="chart_div" style="width: 400px; height: 140px;"></div></center>
  </body>
</html>

Te dejo una foto para que tambien comprendas lo que quiero conseguir.
Seria que se refrescara la pagina y no diera el molesto parpadeo y que solo se moviera la aguja. Con la variable anterior se obtiene el valor el cual hace mover a la aguja con esa cantidad

Última edición por todasontodas; 07/05/2015 a las 03:00
  #10 (permalink)  
Antiguo 07/05/2015, 06:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Evitar parpadeo al actualizar

La llamada a system() es bloqueante, así que detiene la carga de la pagina hasta que se completa.

Ese es precisamente el problema, así que tu código tal cual no tiene solución.

Debes implementar una llamada asíncrona (ajax) para obtener los datos de system(), y dejar la pagina ya cargada: así te evitas recargarla.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 07/05/2015, 11:57
 
Fecha de Ingreso: junio-2009
Mensajes: 101
Antigüedad: 15 años, 6 meses
Puntos: 13
Respuesta: Evitar parpadeo al actualizar

Cita:
Iniciado por todasontodas Ver Mensaje
Muchas gracias por la ayuda pero no me funciono. Te explico un poco el codigo para ver si asi comprendes mejor lo que quiero conseguir, añadi lo tu codigo asi vaya a ser que lo añadiera mal:


Te dejo una foto para que tambien comprendas lo que quiero conseguir.
Seria que se refrescara la pagina y no diera el molesto parpadeo y que solo se moviera la aguja. Con la variable anterior se obtiene el valor el cual hace mover a la aguja con esa cantidad
Como te va a funcionar si ni lo has revisado!!!!!
Fíjate en ésta línea:
Código Javascript:
Ver original
  1. var valor = parseFloat($.get("file.php")); //Fichero PHP que imprime en pantalla el valor de $resultado; (SOLO SI $RESULTADO ES VARIABLE).

crea un archivo llamado "file.php" y dentro de él pon:

Código PHP:
echo system('/etc/nagios3/scrips/pue');
exit; 
  #12 (permalink)  
Antiguo 12/05/2015, 00:45
todasontodas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evitar parpadeo al actualizar

Lo siento pero copie mal el código al ponerlo en el post, te pongo los dos ficheros que tengo creado con los datos que me facilitaste para ver si tengo algo mal:

fichero index.php
Código PHP:
<html>
  <
head>
<!--        <
meta http-equiv="refresh" content="2" refresco web -->
        <
title>PUE</title>
  </
head>
  <
body>
    <
script type="text/javascript" src="https://www.google.com/jsapi"></script>
     <script src="jquery.js"></script>
    <script type="text/javascript">


          google.load("visualization", "1", {packages:["gauge"]});
          google.setOnLoadCallback(function() { drawChart(valor); });


    //$.get() Requiere de la librería JS jQuery
    var options = {                     //Variable fija, no hace falta declararla cada vez que se ejecuta la función drawChart.
        width: 400, height: 140,
        redFrom: 3, redTo: 4,
        yellowFrom:2, yellowTo: 3,
        greenFrom: 0, greenTo: 2,
        min: 0, max: 4,
        minorTicks: 5
    };

    function drawChart() {
        var valor = parseFloat($.get("file.php")); //Fichero PHP que imprime en pantalla el valor de $resultado; (SOLO SI $RESULTADO ES VARIABLE).
        var data = google.visualization.arrayToDataTable([['Label', 'Value'],['PUE', valor],]);
        var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
        chart.draw(data, options);
    }

    reload = setInterval(drawChart(), 2000);
    </script>
        <center><div id="chart_div" style="width: 400px; height: 140px;"></div></center>
  </body>
</html> 
fichero file.php
Código PHP:
echo system('/etc/nagios3/scrips/pue');
exit; 
Me sale en blanco la pagina
¿Se te ocurre cual puede ser el problema?
Saludos y gracias por ayudarme.
  #13 (permalink)  
Antiguo 13/05/2015, 00:05
todasontodas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evitar parpadeo al actualizar

Alguien me echa un a mano?
Saludoss

Etiquetas: html, parpadeo
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 04:37.