Ir para conteúdo
Philippe Luis

Ajuda com Long Polling

Recommended Posts

Galera tenho o seguinte Long Polling

<?php
include 'conexao.php';
date_default_timezone_set('America/Sao_Paulo');
$timeStart = time();

$idFav  = '{"fvr":[22,23,24]}';
$idFav = json_decode($idFav);
$countIdFav = count($idFav->fvr);

if(isset($_POST['timeStamp'])){
	$timeStamp = $_POST['timeStamp'];
}else{
	$timeStamp = date('Y-m-d H:i:s');

}

$sqll = "SELECT *FROM informacoes WHERE data > '$timeStamp'";
$sthh = $conn->prepare($sqll);


$newData = false;
$notificacoes = array();

while (!$newData && (time()-$timeStart)<20) {
	$sthh->execute();
	while ($datas = $sthh->fetch(PDO::FETCH_ASSOC)) {
		$notificacoes [] = array_map('utf8_encode', $datas);
		$nt = json_encode($notificacoes);
		$nt = json_decode($nt);

		for($i = 0; $i < $countIdFav; $i++){
			if($nt[0]->id == $idFav->fvr[$i]){
				$newData = true;
			}
		}
	}
	usleep(500000);
}
$timeStamp = date('Y-m-d H:i:s');
	$dados = array('notificacoes'=>$notificacoes, 'timestamp'=>$timeStamp, );

	echo json_encode($dados);
	exit;

Quando ele achar algun registro eu preciso verificar se o id do usuario que enviou ($nt[0]->id) é igual ao Id dos favoriots ($idFav  = '{"fvr":[22,23,24]}';).

So que enquanto estou fazendo essa verificação o script fica duplicando os dados na varivel ($notificacoes);

 

Ajudem por favor;

se tiverem dicas para melhorar o script também é muito bem vindo.

 

MUITO OBRIGADO GALERA!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Vitor Leite
      Olá galera! Estou precisando de ajuda na diagramação de um projeto em JQuery.
       
      O que estou tentando fazer é o seguinte:
      vários usuários estão online e logados no site. Um deles clica em uma DIV e começa a buscar outros usuários online.
      Quando 10 pessoas clicarem na mesma DIV, somente esses 10 são direcionados a uma página, em tempo real. (Long Polling).
      Não sei como começar a pensar esse projeto. 
      Agradeço a ajuda de cada um. 
       
      Ótimo restante de feriado e ótima semana para todos.
      :)
    • Por Philippe Luis
      Galera tenho o seguinte Long Polling
      <?php include 'conexao.php'; date_default_timezone_set('America/Sao_Paulo'); $timeStart = time(); $idFav = '{"fvr":[22,23,24]}'; $idFav = json_decode($idFav); $countIdFav = count($idFav->fvr); if(isset($_POST['timeStamp'])){ $timeStamp = $_POST['timeStamp']; }else{ $timeStamp = date('Y-m-d H:i:s'); } $sqll = "SELECT *FROM informacoes WHERE data > '$timeStamp'"; $sthh = $conn->prepare($sqll); $newData = false; $notificacoes = array(); while (!$newData && (time()-$timeStart)<20) { $sthh->execute(); while ($datas = $sthh->fetch(PDO::FETCH_ASSOC)) { $notificacoes [] = array_map('utf8_encode', $datas); $nt = json_encode($notificacoes); $nt = json_decode($nt); for($i = 0; $i < $countIdFav; $i++){ if($nt[0]->id == $idFav->fvr[$i]){ $newData = true; } } } usleep(500000); } $timeStamp = date('Y-m-d H:i:s'); $dados = array('notificacoes'=>$notificacoes, 'timestamp'=>$timeStamp, ); echo json_encode($dados); exit; Quando ele achar algun registro eu preciso verificar se o id do usuario que enviou ($nt[0]->id) é igual ao Id dos favoriots ($idFav  = '{"fvr":[22,23,24]}';).
      So que enquanto estou fazendo essa verificação o script fica duplicando os dados na varivel ($notificacoes);
       
      Ajudem por favor;
      se tiverem dicas para melhorar o script também é muito bem vindo.
       
      MUITO OBRIGADO GALERA!!!
    • Por Mateus Silva
      Boa tarde, me surgiu a necessidade de criar um sistema de chat online e eu gostaria de saber qual a melhor forma ?
      Com Interval do JS não funciona pra mim, muita carga no servidor, Node também está fora de cogitação. Pensei em usar Long Polling, mas ainda assim não sei se seria a forma mais eficiente de fazer isto, nem só para chat, mas para qualquer tipo de sistema que seja em tempo real, até porque não será utilizado o sistema de atualização em tempo real apenas no chat! Alguém com uma luz ?
×

Informação importante

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