Ir para conteúdo
Fórum Script Brasil
  • 0

Onde está o erro?


Jefrey S.

Pergunta

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);
}


?>

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Não teste p script, mas acredito que esta parte esteja errada:

if (!$text==$ultima) {

//troca ela por 

if ($text!=$ultima) {

//ou

if (!($text==$ultima)) {

Vê se isso resolve, porque como o if estava antes, não funcionaria como você esperava. A precedência da negação(!) é maior que o operador de igualdade.

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

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é?

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,176...6999#msg-176999

http://br.answers.yahoo.com/question/index...09051142AAkP9P0

http://scriptbrasil.com.br/forum/index.php...mp;#entry619229

http://forum.codigofonte.net/topic/17588-onde-esta-o-erro/

Editado por Jefrey S.
Link para o comentário
Compartilhar em outros sites

  • 0

aaeeee! funcionou!

é só trocar a abertura do arquivo por file_put_contents()!

o código ta cheio de partes comentadas, uma bagunça, por causa das tentativas e retornos ao estado anterior! kk tem q fazer uma limpeza!

valeu Andrey Knupp!

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 já foi carregada.

3. como eu faço para, ao invés de adicionar uma nova linha na tela do cliente, remover a anterior e substituir pela nova (sem usar refresh com html ou js)?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...