Ir para conteúdo

POWERED BY:

Arquivado

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

Jefrey

Onde está o erro?

Recommended Posts

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

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

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

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

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

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

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

×

Informação importante

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