1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Executar comando de 5 em 5 segundos em página PHP

Discussão em 'Web Development' iniciada por tonebiclas, 5 de Julho de 2008. (Respostas: 8; Visualizações: 3700)

  1. tonebiclas

    tonebiclas Power Member

    Boas pessoal, estou com mais um problema...

    O que preciso de saber é como executar um bloco de comandos de 5 em 5 segundos automaticamente numa página PHP...

    O bloco de comandos é este:

    Código:
    <?
    if (!$abrir=fopen("tome.txt","r+"))
    {
    echo "Impossovel abrir o ficheiro";
    } else {
    for($valor>=1;$valor<=50;$valor++)
    {
    $formula=$valor*1024;
    echo @fgets($abrir,$formula);
    ?>
    <br>
    <?
    }
    }
    fclose($abrir); 
    ?>
    
    Desde já obrigado a todos, cumps ;)
     
    Última edição pelo moderador: 10 de Julho de 2008
  2. shello

    shello Moderador
    Staff Member

  3. tonebiclas

    tonebiclas Power Member

    desculpa não formulei bem a minha questão...
    tópico actualizado...
     
  4. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Continuo a não perceber bem, mas se o que queres é ter o resultado dessa página actualizado a cada 5 segundos, o ideal é usares AJAX.
    Javascript -> XMLHttpRequest + setInterval :P
     
  5. tonebiclas

    tonebiclas Power Member

    ei, isso já é muito desenvolvido para mim...

    começei com o PHP á pouco tempo, e fora o PHP só sei Pascal e Visual Basic

    não há maneira de fazer isso em PHP ?
     
  6. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    O PHP é uma linguagem server-side. Para poderes actualizar qualquer informação do cliente, tem de ser ele a "pedir" essa actualização.
    A única forma que conheço de um cliente normal poder comunicar com o servidor sem ter de fazer reload à página é usando AJAX.

    Eu já te mostro um exemplo...

    index.htm:
    Código:
    <html>
    <head>
    <script type="text/Javascript">
    var xmlHttp
    function actualizar() {
     xmlHttp=GetXmlHttpObject()
     if (xmlHttp==null) {
      alert ("O browser não suporta AJAX")
      return
     } 
     var url="servidor.php?query=timestamp&sid="+Math.random()
     xmlHttp.onreadystatechange=stateChanged
     xmlHttp.open("GET",url,true)
     xmlHttp.send(null)
    }
    function stateChanged() {
     if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
      document.getElementById("ajax").innerHTML=xmlHttp.responseText
     }
    }
    function GetXmlHttpObject() {
     var xmlHttp=null;
     try {
      // Firefox, Opera 8.0+, Safari
      xmlHttp=new XMLHttpRequest();
     } catch (e) {
      // Internet Explorer
      try {
       xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
     }
     return xmlHttp;
    }
    </script>
    </head>
    <body>
    Exemplo de AJAX<hr>
    <div style="background-color: #DDDDDD; padding: 20px;">
    <span id="ajax"><span>
    </div>
    <script type="text/Javascript">setInterval("actualizar()", 5000)</script>
    </body>
    </html>
    
    servidor.php:
    PHP:
    <?php
    echo htmlentities("Última actualização: " date("m-d-Y H:i:s"));
    ?>
    Grava estes dois ficheiros juntos na mesma pasta (acessível pelo apache) e abre o index.htm no browser.

    Depois troca o servidor.php pelo PHP que mostraste no primeiro post :P
     
    Última edição: 5 de Julho de 2008
  7. tonebiclas

    tonebiclas Power Member

    muito obrigado Kayvlim, mas queria insistir mais no PHP, e então fazer um botão para actualizar?
    não estou a ver como farei um botão para executar aquele bloco de código...alguma sugestão?

    mais uma vez obrigado.
     
    Última edição pelo moderador: 10 de Julho de 2008
  8. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Sempre que quiseres comunicar com o servidor sem actualizares a página, só podes fazer uma de duas coisas: AJAX por XMLHttpRequest, ou AJAX via uma IFrame. Ambos envolvem Javascript (como, aliás, o termo "AJAX" indica - Asynchronous Javascript And Xml)

    Senão, só se o botão actualizar a página inteira.

    O PHP não pode fazer nada quanto a isso.
     
  9. tonebiclas

    tonebiclas Power Member

    ok muito obrigado pela ajuda.
    mais tarde vou testar o código que puseste em cima cumps ;)
     

Partilhar esta Página