Visualizar ao mesmo tempo que vai executando - PHP - Portugal-a-Programar
Visualizar ao mesmo tempo que vai executando
Por MROverclock, 29 de Setembro de 2007 em PHP
eu estou a fazer uma porção de código que faz umas querys a uma base de dados etc...
O que eu pretendo é que no fim de cada query e logo após todos os dados terem sido processados que seja logo imprimido no ecrã do utilizador enquanto o resto das querys continuam a ser processadas e imprimidas uma a uma.
isso é possível com o PHP?
PS - Não fiz search sobre este assunto porque não sei palavras chave usar.
acho que só com javascript (ajax)...
para isso mais vale usares a command line interface do php.
dependendo da tua instalação e do teu sistema operativo pode funcionar assim:
php oteuficheiro.php
Na linha de comandos.
http://se2.php.net/manual/pt_BR/features.commandline.php
Parece que há aqui um mal entendido :-[
Eu tenho um ficheiro pagina.php que quando é acedido pelo utilizador através da internet, mostra vários gráficos que demoram o seu tempo a ser processados. em vez de estar 10segundos a espera que a página seja apresentada toda de uma vez, queria que ele após processar o 1º gráfico que o envie logo para o utilizador e assim sucessivamente gráfico a gráfico até ao ultimo que é quando a página aparecerá completa.
Se não uso o PHP uso o quê e como? (dêm-me só umas dicas que depois pesquiso sobre isso)
Mmmm... pois isso isso é um pouco esquisito. Uma aplicação web não ser escrita de forma a empregar grandes quantidades de processamento enquanto se serve uma página. Nem sei como é que o apache ( ou outro servidor ) lida com isso. Tipo... quanto tempo ou quantos dados espera até realmente enviar a página, e se a divide por pacotes, etc...
Talvez alguem saiba bem como lidar com este tipo de situações, pessoalmete acho que nunca vais conseguir grande controlo do teu output dentro da mesma página.
Uma forma de contornar isto é fazeres um script para actualizar os graficos que corre quando tu quiseres. Podes corre-lo através o cron, ou com umapágina a que só tu tens acesso, ou de mais umas quantas formas.
Nesse caso o visitante so precisa de aceder a uma pagina estática e os teus problemas acabam.
tipo eu já vi uma cena parecida já não me lembro aonde ao fazer a instalação dum forum...(ja nem sei qual)
Aquili aparecia:
Creating database: Finished
Passado uns segundos
Executng queries: Finished
E assim sucessivamente ... Mas n faço a minima ideia de como fazer..
Das duas uma, ou isso faz refresh da pagina quando acaba determinada tarefa, ou faz um pedido xmlhttprequest e actualiza determinado elemento do html. Esta ultima técnica é o que se chama AJAX.
echo "ALOO!";
echo "BAI!";
Ele não faz o efeito pretendido?
LOL não conhecia o sleep xD
mas n funciona lol
vai atrasar o scrip logo no principio nao interrompe a meio mesmo que separes por diferentes <? ?>..
axo eu..(tive a testar e foi o que me pareceu)
DJ thyrax, isso não funciona porque o apache só envia a página depois de esta estar processada.
Podia ser por bloco, mas não sabia. Que eu me lembre, o cPanel faz o pretendido, e é codado em Perl.
O que eu pretendo é exactamente o que o joxnas disse. Vou tentar procurar por esse xmlhttprequeste e por ajax!
P.S. - O script em php é todo executado do inicio ao fim só depois é feito o output! A cena do sleep() já eu tinha testado
Como o djthyrax falou do caso do cpanel, lembrei-me aqui de uma coisa.
Eventualmente se o php estiver a correr como CGI em vez de módulo do apache é capaz de funcionar, mas não tens assim grandes vantagens nisso, ou podes não ter escolha em como interpretar o teu php.
Se alguem estiver mais por dentro como funciona um módulo apache e o CGI afixe aqui para clarificar o pessoal.