Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

felipepai

carregamento de pagina

Recommended Posts

Exemplo código simples desse, abaixo simples while, por que algum servidor, ela só exibi as informações na tela quando termina o while, e outro o while vai processando e mostrando na tela?

por exemplo, no xamp localhost só mostra quando termina tudo, como faz a configuração para ir carregando o while e mostrando?

$con = 1;

while($con < 50){

  echo $con; 

  $con++;

sleep(10);

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em vb tem um bagulho chamado DoEvents que faz isso só que o código fica mais lento porque é uma tarefa a mais pra ser feita e multiplicando esse tempo por cada passagem no loop o tempo a mais pode ser grandim dependendo a quantidade de passagem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso depende da velocidade de servidor!
Obvio que num localhost você vera os dados "apos carregado"!

 

Isso acontece que devido o processamento ser muito rapido, você a "olho nu" visualiza o resultado prontinho na tela com o script já processado.

 

Já num servidor web, onde você depende da velocidade de processamento do servidor e em conjunto depende também da velocidade da sua conexão com o servidor, pode acontecer de você ver a "olho nu" as informações sendo processadas e imprimidas na tela aos poucos!

 

Agora, se você quer essa visualização "aos poucos" ou "visualizar somente apos completado" de forma proposital, ai envolveria um pouco de jquery/ajax ou até mesmo na mudança de atributos de configuração de processamento do servidor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que não fui claro, por exemplo no código abaixo, ele vai processar o while vai demorar 10 minutos por causa do sleep, e quando termina ele mostra 1 , 2 ,3 ,4,5,6,7.... que foi numero que mandei imprimir, porém tem alguns servidor que ele imprimir por exemplo passou 1 minuto imprimir o 1 passou 2 minuto imprimir 2, conforme vai carregando, acredito que seja alguma configuração.

 

$con = 1;

while($con < 10){

  echo $con; 

  $con++;

sleep(60);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Felipe, se você executar isso no terminal, o valor de $con sera imprimido a cada nova iteração, conforme você descreveu.
No caso de executar o script pelo navegador, o navegador faz apenas uma requisição e aguarda uma resposta, por esse motivo, o comportamento sera de aguardar tudo ser processado, para só então mostrar. O comportamento é basicamente o mesmo de ob_start();

http://php.net/manual/pt_BR/function.ob-start.php


Uma solução para ter esse comportamento do terminal no navegador, (mostrar a mensagem a cada iteração) seria também fazer um loop em javascript, onde o mesmo verificaria via ajax, se existe algo novo para exibir. Esse algo novo, seria o valor de sua variavel $con, que seria salvo no banco de dados, ou em algum outro lugar, para o navegador consultar. E obviamente você terá que implementar um algoritmo FIFO para fazer o controle da exibição do conteúdo

https://pt.wikipedia.org/wiki/FIFO

Para não ficar duvidas, não há configurações que você possa mexer para ter esse comportamento, terá que programar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.