Ir ao conteúdo
  • Cadastre-se
Plástico Bolha

Rodar php e javascript ao mesmo tempo

Recommended Posts

Boa noite pessoal, precisava rodar PHP e javascript "ao mesmo tempo", preciso atualizar um gráfico feito em javascript sem parar de rodar o PHP em momento algum, simplifiquei o problema no código abaixo, se conseguir fazer o código abaixo rodar, eu consigo atingir o objetivo. Caso alguém saiba como realizar esse objetivo de outra maneira por favor me de um help !

<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">google.charts.load('current', {'packages':['corechart']}); </script>
  </head>
<?php 
@ini_set("output_buffering", "Off");
@ini_set('implicit_flush', 1);
@ini_set('zlib.output_compression', 0);
@ini_set('max_execution_time',0);
header( 'Content-type: text/html; charset=utf-8' );
echo "Contador: ";
$i = 0;
while (true)  { // Enquanto esse looping não terminar nunca vou exibir o gráfico
  				// depois que i = 5, o gráfico é mostrado, e esse é o problema, rodo uma coisa depois outra, e não as 2 ao mesmo tempo
    for (; $i < 5; $i++) {
        echo $i." -- ";
        if(sleep(1) != 0){
            echo "sleep failed script terminating"; 
            break;
        }
        flush();
        ob_flush();
    }
    
    printf('
    <script type="text/javascript"> 
    i = '.$i.'    
    alert(i) // Engraçado que isso funciona ! quando i = 5 o alert é mostrado, mas o gráfico não é exibido !
    var dashboardState = "";
    options = ""
    function updateDraw() {
        chart = new google.visualization.PieChart(document.getElementById("piechart"));
        data = google.visualization.arrayToDataTable(dashboardState);
        chart.draw(data, options);
    }                        
    VariavelPHP = "LoL =D"
    options = {title: "Teste"};
    dashboardState = eval("[[\'asd\', \'qwe\'],[\'VariavelPHP\', i],[\'Task2\', 25],[\'Task3\',  10],]");
    google.charts.setOnLoadCallback(updateDraw);
    </script>
    ');
    $i = 0;
}
?>
<body>
    <div id="piechart" style="width: 900px; height: 500px;"></div>
</body>
</html>

Se o While (true) for retirado e o "looping for" chegar em $i = 5, o gráfico é mostrado, "MAS", se o While (true) for mantido, então o gráfico nunca será mostrado ! 

 

Agradeço a paciência !

 

Editado por Plástico Bolha

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, Plástico Bolha disse:

Resolvi com Long Polling ...

@Plástico Bolha Poderia descrever melhor como você resolveu? informar com um pouco mais de detalhes. assim você ajuda os demais!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estou fazendo mineração de dados no Twitter, e precisava que o PHP roda-se e retorna-se os dados para o cliente que abri-se conexão com o PHP, ou seja, JS->PHP->Twitter e no retorno do Twitter temos Twitter->PHP->JS. Como estou pegando Tweets em tempo-real através de uma Stream aberta entre o PHP e Twitter, não posso garantir que pegar 10 Tweets de uma palavra chave vai demorar 3 segundo ou 5 minuto, se abrir e fechar conexão muitas vezes com o Twitter levo ban de 1 minuto, então precisava que o PHP roda-se sozinho apenas com um start do JS, ou seja, queria abrir uma unica conexão e deixar ela aberta com o PHP, e que o servidor me responde-se sempre que tivesse resposta, sem que o JS precisa-se ficar abrindo novas requisições e ao mesmo tempo que o JS fica-se livre para fazer outras tarefas dentro da página enquanto não obtive-se resposta do PHP. Por isso que queria rodar o PHP e JS ao mesmo, mas deu pra resolver de outro jeito, que não é exatamente o ideal, mas funciona ...

Citação

A técnica do Server Push consiste em manter uma conexão aberta entre cliente e servidor. Quando houver conteúdo para o servidor enviar ao cliente, ele o envia. Assim, o cliente não precisa ficar “perguntando” para o servidor se ele tem novo conteúdo. O problema dessa abordagem é que ela sobrecarrega o servidor com muitas requisições, aumentando tráfego de rede e podendo até derrubar o servidor.

segue o link do tutorial: http://rberaldo.com.br/server-push-long-polling-php-ios/

Untitlesdfsfsdfdsfd.png

Editado por Plástico Bolha
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×