Ir para conteúdo

POWERED BY:

Arquivado

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

Detonador PHP

jquery.post /jquery.get falha na verificação

Recommended Posts

Olá pessoal, estou com uma dúvida.

 

Tenho um sistema onde ele verifica se há novas mensagens no sistema. Estas informação são vindas de um banco de dados.

Porém ao invés de fazer um setTimeout e ficar dando post com uma consulta mysql, fazendo com que meu banco de dados fique lento, resolvemos fazer aqiu com que toda vez que o sistema tenha uma nova mensagem ele gera um arquivo txt em uma pasta e então este setTimeout fica dando posts em um arquivo PHP que verifica se esta pasta esta vazia.

 

A ideia é muito boa, funcionou no início, mas notei que muitas vezes o processo tranca e para de mostrar as mensagens. Ontem por acaso achei um erro no debug do FF. Muitos falaram que é um erro no request do jquery. Queria compartilhar com vcs ideias para fazer com que esta mensagem volte a funcoinar.

 

Abaixo coloco os códigos que criei!

 

JAVASCRIPT:

$(document).ready(function() {

	verifica_mensagem(document.getElementById('keyword').value);
	
	function verifica_mensagem(keyword){
	
		setTimeout(function(){
		
			$.get('testa_recebimento.php',{palavra: keyword}, function(data){
						
				if(data != "VAZIO"){
					
					$("#keyword_resposta").fadeOut("slow",function(){
					
						document.getElementById('keyword_resposta').innerHTML = data;
						
						$("#keyword_resposta").fadeIn("slow");
						
					});
					
				}
				
				verifica_mensagem(document.getElementById('keyword').value);
			
			});
			
		},1500);
	
	}
	
});
O que este javascript faz: A cada 1s e meio ele da um get na função php que verifica se exite mensagem na pasta. Se tiver ele escreve esta mensagem e apaga o arquivo txt com ela.

 

 

 

PHP

if(@file_exists("mensagens/".$palavra.".txt")){

	$ponteiro = @fopen("mensagens/".$palavra.".txt", "r");
	//$conteudo = fread($ponteiro, filesize("teste.txt"));
	
	if($ponteiro){
		
		while (!@feof($ponteiro)){
		
			$linha = @fgets($ponteiro, 4096);
			
			echo $linha;
			
		} 
		
	}
	
	@fclose($ponteiro);
	@unlink("mensagens/".$palavra.".txt");

}else{

	echo "VAZIO";

}
Este arquivo PHP apenas escreve a mensagem na tela caso exista o arquivo texto.

 

Eu sei que ele esta funcionando, pelo menos dentro do PHP, porque eu colco o arquivo na pasta, o javascript faz a vertificação dando get no arquivo testa_recebimento.php, este arquivo php acha a mensagem txt, escreve na tela a mensagem, apaga o arquivo txt, mas a function(data) do get do jqyery não retorna nada.

 

O que esta acontecendo que é esta função as vezes funciona, as vezes não funciona! O problema que ela não gera erro algum.

Por isso se tiverem alguma dica ficaria agradecido.

 

Nenhum dica pessoal?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo de inicio seu problema parece com o PHP, tem varios erros com seu PHP, por exemplo

 

não use register_globals(configuração do PHP), use $_GET['palavra'] para GET e $_POST['palavra'] para POST, não use arroba para ocultar os erros, faça um tratamento de erros via FORK (IF) para trabalhar melhor e indentificar seu erro.

 

E sempre verifique as variaveis GET e POST usando a função isset, algo assim:

if(isset($_GET['variavel'])){
  if($_GET['variavel']=='valor'){//Aqui trabalhe com igual, maior, maior igual, menor, etc
   //funções
  }
}

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.