Wilker 3 Denunciar post Postado Outubro 23, 2004 e galera, td beleza? o negocio eh o seguinte... eu consegui descola um geito em PHP para evitar ter q ficar dando refresh (para scripts + ativos). o geito foi assim: PHP [/tr][tr]//primeiro vamos tirar o tempo maximo de execucaoset_time_limit(0); //comecar um loop infinito while(1) { //aki devem ficar as acoes que devem ser executadas //agora vamos parar o script por 1 segundo, para n sobrecarregar sleep(1); } [/tr] bom, isso funciona... mais soh no IIS!! no apache essa sintaxe n funciona... por que? simples: no IIS os dados sao mostrados enquanto eles saum carregados, dessa forma ele vai carregando e mostrando, ja no Apache, ele espera o script ser completamente carregado para depois exibir... e como o script nunca sera carregado... bom, isso eh uma teoria minha, n tenho certeza nenhuma disso... o kso seria, alguem tem alguma outra ideia, ou sabe outra forma de fazer um metodo de carregamento constante sem refresh?? quem tiver alguma ideia ou sugestao pra fazer isso posta ai. flw Compartilhar este post Link para o post Compartilhar em outros sites
Keitaro 0 Denunciar post Postado Outubro 23, 2004 estranho n funcionar...aki pelo menos, no easyphp, rodando apache, funcionou..pode se usar o for(; ;) { } mas é a mesma coisa... Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Outubro 23, 2004 estranho n funcionar...aki pelo menos, no easyphp, rodando apache, funcionou..pode se usar o for(; ;) { } mas é a mesma coisa... pois eh kra... o meu webchat eu fiz montado nessa estrutura ai, soh q todo mundo q usa apache me disse q o webchat n tava funcionando... ai veio o problema... Compartilhar este post Link para o post Compartilhar em outros sites
dokkalfr 0 Denunciar post Postado Outubro 23, 2004 vcs tão certos, o apache (em *nix pelomenos) só larga a página quando ela foi completamente processada! Oque podem fazer é usar Output Buffering Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Outubro 23, 2004 vcs tão certos, o apache (em *nix pelomenos) só larga a página quando ela foi completamente processada! Oque podem fazer é usar Output Buffering kra... dei uma olhada nisso... mais n vi nada mto util pra esse kso n... caso tenha explica ai plzeu tenho fe que exista algum header que me ajude com isso... Compartilhar este post Link para o post Compartilhar em outros sites
dokkalfr 0 Denunciar post Postado Outubro 24, 2004 com essas funções de controle de buffer tu pode fazer assim PHP [/tr][tr]ob_start(); echo "balblalbalbalblablabla"; //ate aqui nada foi enviado pra browser, ta tudo guardado num buffer! ob_end_flush(); //agora sim ... todo conteudo do buffer foi descarregado! [/tr] no teu caso, tu podes colocar um ob_flush depois do sleep(1) e daí o php força o apache a enviar o conteúdo para o navegador! Compartilhar este post Link para o post Compartilhar em outros sites
Keitaro 0 Denunciar post Postado Outubro 24, 2004 eu nunca trabalhei com loop infinito... mas como usa-lo em aplicacoes para web?usando como exemplo o seu chat...while(1) {echo "passou por aqui";sleep(1);}se eu executo este script ele vai ficar carregando sem fim.. e n exibe nada...como fazer para exibir o texto, num chat por exemplo? Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Outubro 24, 2004 com essas funções de controle de buffer tu pode fazer assim PHP [/tr][tr]ob_start(); echo "balblalbalbalblablabla"; //ate aqui nada foi enviado pra browser, ta tudo guardado num buffer! ob_end_flush(); //agora sim ... todo conteudo do buffer foi descarregado! [/tr] no teu caso, tu podes colocar um ob_flush depois do sleep(1) e daí o php força o apache a enviar o conteúdo para o navegador! tentei usar isso ai kra... mais deu na mesma... valew ai pela intencao... o negocio eh continuar tentando Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Outubro 24, 2004 eu nunca trabalhei com loop infinito... mas como usa-lo em aplicacoes para web? usando como exemplo o seu chat... while(1) { echo "passou por aqui"; sleep(1); } se eu executo este script ele vai ficar carregando sem fim.. e n exibe nada... como fazer para exibir o texto, num chat por exemplo? bom kra, esse eh realmente o ponto pelo qual esse topico procura arrumar... usa esse codigo aki: PHP [/tr][tr]<?php set_time_limit(0); echo "<script> /*vsdhuvsdiovhsdivhvioshvfoihiovhdiohiofh ioh iodshv iosvh iosdhio sdhfv ioshdfv ihsdiovh sdiof hfiosdh iosh iodh is*/ </script>"; echo "<script> /*vsdhuvsdiovhsdivhvioshvfoihiovhdiohiofh ioh iodshv iosvh iosdhio sdhfv ioshdfv ihsdiovh sdiof hfiosdh iosh iodh is*/ </script>"; echo "<script> /*vsdhuvsdiovhsdivhvioshvfoihiovhdiohiofh ioh iodshv iosvh iosdhio sdhfv ioshdfv ihsdiovh sdiof hfiosdh iosh iodh is*/ </script>"; echo "<script> /*vsdhuvsdiovhsdivhvioshvfoihiovhdiohiofh ioh iodshv iosvh iosdhio sdhfv ioshdfv ihsdiovh sdiof hfiosdh iosh iodh is*/ </script>"; echo "<script> /*vsdhuvsdiovhsdivhvioshvfoihiovhdiohiofh ioh iodshv iosvh iosdhio sdhfv ioshdfv ihsdiovh sdiof hfiosdh iosh iodh is*/ </script>"; while(1) { echo "a"; sleep(1); } ?> [/tr] se você tiver a chance de usar esse codigo ai no IIS você vera como a cada 1 segundo sera digitado um "a" na tela. ja no apache isso n roda de geito nenhum... esse eh o problema... se você quizer ver um uso extenso dessa sintaxe, baxa o meu chat: http://www.wilkerdeveloper.kit.net/wwc.zip o arquivo que contem essa estrutura eh o reload.php se você instala ele no apache, a tela onde deveria ser exibido as mensagem vai ficar eternamente branca... no IIS ele vai rodar, c você quizer ver ele rodando: http://www.uniguararapes.com.br/Wilker/php/webchat obs: você deve tar se perguntando pra q eu coloquei tanto texto de saida inutil ali em cima, os scripts como comentarios, o motivo foi o seguinte, o IIS espera um conteudo minimo ser carregado antes de exibir o conteudo, no kso, akilo ali foi o suficiente pra ele comececar a escrever enquanto carrega Compartilhar este post Link para o post Compartilhar em outros sites
fast 0 Denunciar post Postado Outubro 24, 2004 bom, depois q eu vi esse tópico, eu andei estudando um pouco sobre ob... a solução q eu achei pra esse caso e que funcionou, foi usar o flush(), junto com o ob_flush() (q jah foi citado acima) ... jah q usando qualquer um dos dois separados não funcionou... PHP [/tr][tr]<?php set_time_limit(0); while(1) { echo "a"; sleep(1); flush(); ob_flush(); } ?>[/tr] esse código funcionou perfeitamente quando eu testei num servidor unix, com apache e php 4.3.9 ... espero ter ajudado.... []´s Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Outubro 24, 2004 bom, depois q eu vi esse tópico, eu andei estudando um pouco sobre ob... a solução q eu achei pra esse caso e que funcionou, foi usar o flush(), junto com o ob_flush() (q jah foi citado acima) ... jah q usando qualquer um dos dois separados não funcionou... PHP [/tr][tr]<?php set_time_limit(0); while(1) { echo "a"; sleep(1); flush(); ob_flush(); } ?>[/tr] esse código funcionou perfeitamente quando eu testei num servidor unix, com apache e php 4.3.9 ... espero ter ajudado.... []´s kra... testei isso exatamente num servidor unix com o PHP 4.3.9 e n funciono :( ja to ficando desesperado aki... to precisando mto fazer isso funcionar... Compartilhar este post Link para o post Compartilhar em outros sites
fast 0 Denunciar post Postado Outubro 24, 2004 bom, depois q eu vi esse tópico, eu andei estudando um pouco sobre ob... a solução q eu achei pra esse caso e que funcionou, foi usar o flush(), junto com o ob_flush() (q jah foi citado acima) ... jah q usando qualquer um dos dois separados não funcionou... PHP [/tr][tr]<?php set_time_limit(0); while(1) { echo "a"; sleep(1); flush(); ob_flush(); } ?>[/tr] esse código funcionou perfeitamente quando eu testei num servidor unix, com apache e php 4.3.9 ... espero ter ajudado.... []´s kra... testei isso exatamente num servidor unix com o PHP 4.3.9 e n funciono :( ja to ficando desesperado aki... to precisando mto fazer isso funcionar... ele dah algum erro ou fica soh carregando a página? jah tentou com ob_start() no começo do código? Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Outubro 24, 2004 bom, depois q eu vi esse tópico, eu andei estudando um pouco sobre ob... a solução q eu achei pra esse caso e que funcionou, foi usar o flush(), junto com o ob_flush() (q jah foi citado acima) ... jah q usando qualquer um dos dois separados não funcionou... PHP [/tr][tr]<?php set_time_limit(0); while(1) { echo "a"; sleep(1); flush(); ob_flush(); } ?>[/tr] esse código funcionou perfeitamente quando eu testei num servidor unix, com apache e php 4.3.9 ... espero ter ajudado.... []´s kra... testei isso exatamente num servidor unix com o PHP 4.3.9 e n funciono :( ja to ficando desesperado aki... to precisando mto fazer isso funcionar... ele dah algum erro ou fica soh carregando a página? jah tentou com ob_start() no começo do código? ele soh n carrega a pagina... e eu ja tentei da ob_start() no inicio do codigo e nada... ta fodinha faze isso viu... Compartilhar este post Link para o post Compartilhar em outros sites
dokkalfr 0 Denunciar post Postado Outubro 24, 2004 Também testei aqui e funcionou ... com ob_flush()da uma olhada se tu naum ta mandando nada antes do ob_start() ... Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Outubro 24, 2004 Também testei aqui e funcionou ... com ob_flush()da uma olhada se tu naum ta mandando nada antes do ob_start() ... tentei de td isso q vcs disseram... mais n tive resultado positivo :( tentei de todos os geitos, com ob_start(), sem ob_start(), com ob_start no inicio do codigo, no meio... n consegui fazer rodar no apache de geito nenhum... :( Compartilhar este post Link para o post Compartilhar em outros sites
LeoLoko 0 Denunciar post Postado Outubro 24, 2004 Minha Config é: Apache version : Apache/1.3.31 (Win32) PHP version : 5.0.2 Testei aqui exatamente assim: PHP [/tr][tr]<?phpob_start(); set_time_limit(0); while(1) { echo "a"; sleep(1); flush(); ob_flush(); } ?>[/tr] Funcionou, ele vai escrevendo os "a" na tela, um do ladinho do outro, mas a barra de progresso do IE num termina nunca! heheheheh Mas funcionou sim, e no apache! Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Outubro 24, 2004 q estranho... sera q eh soh aki q n roda isso??? Compartilhar este post Link para o post Compartilhar em outros sites
fast 0 Denunciar post Postado Outubro 24, 2004 kra.. eu testei o código q eu postei mas não funciona no meu internet explorer... eu tava testando no firefox Compartilhar este post Link para o post Compartilhar em outros sites
LeoLoko 0 Denunciar post Postado Outubro 24, 2004 Tem uma coisa.Eu fiz o código aqui no dreamweaver, dei F12 e funcionou normal, foi quando eu vim aqui postei. logo após, fechei o IE e fui no dreamweaver e dei F12 denovo, agora não funcionou, tentei restartar o APACHE, e mesmo assim não funcionou!Agora naum tah funcionando de jeito nenhum! Não sei pq só funcionou na primeira vez! <_< <_< <_< Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Outubro 25, 2004 eh meu velho... o apache eh de lua... as vezes funciona... as vezes n... tem q arrumar um geito q funcione sempre. pq as vezes fica fodinha... o geito eh sair tentando!! hehhehemais eu ainda tenho esperanca q exista algum header pra isso... tem header pra td... deve ter 1 pra isso neh n??? Compartilhar este post Link para o post Compartilhar em outros sites