Ir para conteúdo

Arquivado

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

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

  • 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.