Jefrey 0 Denunciar post Postado Fevereiro 9, 2011 Este script fica em loop contínuo a cada segundo, verificando novo conteúdo no arquivo texto.txt e, se houver novidades, gravando no arquivo ultima.txt e mostrando na tela. Porém, ele só grava na primeira modificação. Da segunda em diante, não faz nada. Note que se retirar a parte responsável pelo salvamento do ultima.txt, ele funciona corretamente, mas não da maneira que eu quero. Onde está o erro neste bloco? <? header("Cache-Control: no-cache, must-revalidate"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // define o tempo limite do script (0 = infinto) set_time_limit(0); // executa o script ate o final independente do usuario sair da pagina ignore_user_abort(true); // envia algum dado antes de comecar a enviar o texto da pagina for ($i = 0; $i<100; $i++) echo " "; // envia os dados do buffer pro usuario flush(); ob_flush(); // enquanto o usuario estiver conectado, faz... while (!connection_aborted()) { $text = file_get_contents("texto.txt"); $ultima = file_get_contents("ultima.txt"); // ve se o texto atual já foi escrito if (!$text==$ultima) { // se o texto for novo, grava-o no arquivo temporario que sera consultado na proxima $abre = fopen("ultima.txt", "w"); fwrite($abre, $text); fclose($abre); // mostra o texto com quebra de linha echo $text."<br>"; } // envia os dados do buffer pro usuario flush(); ob_flush(); // "dorme" por 1 segundo sleep(1); } ?> Eu postei a mesma dúvidas nos seguintes links: http://forum.imasters.com.br/topic/423375-onde-esta-o-erro/ http://phpbrasil.com/phorum/read.php?2,176999,176999#msg-176999 http://br.answers.yahoo.com/question/index?qid=20110209051142AAkP9P0 http://scriptbrasil.com.br/forum/index.php?showtopic=158106&st=0&p=619229entry619229 http://forum.codigofonte.net/topic/17588-onde-esta-o-erro/ Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Fevereiro 9, 2011 troque <? pra <?php ^_^ não use fwrite .. use file_put_contents assim file_put_contents($abre, $text, FILE_APPEND); // vai incrementar a cada vez que for adicionado no final do conteudo .. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Jefrey 0 Denunciar post Postado Fevereiro 9, 2011 Não funcionou! Antes de perder a cabeça, eu vou desistir deste código. Mas, para isso, eu preciso de um substituto. Por isso, se também não conseguirem descobrir onde está a bost* do erro, e souberem como fazer, será melhor, porque os meus analgésicos já estão acabando. O código precisa verificar modificações num arquivo e mostrá-las, se houverem. Como aqueles utilizados nos chats. Mas, não posso usar refresh com HTML ou JS, porque se eu for mostrar um vídeo do youtube, por exemplo, fica complicado, né? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Fevereiro 9, 2011 Qual Erro ?? acho que o file_put_contents não pode abrir o arquivo em variavel do fopen .. tente armazenar o nome numa variavel normal e indicar ela no file_put_contents $arquivo_n = 'teste.txt'; file_put_contents($arquivo_n, $text, FILE_APPEND) :P Compartilhar este post Link para o post Compartilhar em outros sites
Jefrey 0 Denunciar post Postado Fevereiro 9, 2011 tentei assim tbem, mas nao funfou. mas, de qualquer forma, eu tenho que remover todo o conteúdo do arquivo ao salvar. ou arranjar outro script... Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Fevereiro 9, 2011 Escapando Um Pouco do titulo , porque Você inicia 2 fluxos .. ? ob_flush(); Qual O Erro ?? Posta o script todo com a funçao que te falei pra eu testar aqui :P ;) Compartilhar este post Link para o post Compartilhar em outros sites
Jefrey 0 Denunciar post Postado Fevereiro 9, 2011 aeeeee! funcionoooooooooooooooooooooooooooooooooooooouuuuuuuuuu!!!!!!!!!!!!!!!!!!!! :joia: :) B) :P ^_^ ;) :D :!: na verdade, eu tive que retirar o FILE_APPEND. mas, só mais algumas perguntas: 1. Não tem como bloquear o comando "Parar" do cliente? Porque se ele clicar em "Parar", o script para de funcionar (pelo menos no Firefox). 2. Não tem como retirar o ícone e a palavra "carregando" do browser? tipo, engana o navegador e ele acha que ja foi carregada. 3. como eu faço para, ao inves de adicionar uma nova linha na tela do cliente, remover a anterior e substituir pela nova (sem usar refresh com html ou js)? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Fevereiro 9, 2011 js .. ajax .. Não entendi as perguntas 1 e 2 .. Compartilhar este post Link para o post Compartilhar em outros sites
Jefrey 0 Denunciar post Postado Fevereiro 10, 2011 1. O script é executado normalmente. Porém, se o cliente clicar no botão "Parar" do navegador, o script é interrompido e as atualizações não vem! 2. Enquanto o script é executado, fica aparecendo "Carregando..." no browser (até porque o script é um loop infinito, nunca termina de carregar). Tem como enganar o navegador, enviando algo que retire o "Carregando..."? 3. O terceiro é só detectar a modificação e ao inves de envia-la ao cliente, enviar um pedido de refresh em HTML/JS, certo? Compartilhar este post Link para o post Compartilhar em outros sites