Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    500

    Long polling example - Problema flush

    Salve,
    ho scritto il codice sottostante, l'obiettivo è quello di creare una chat in ajax senza però dover effettuare chiamate ogni 200/400/500 millisecondi.

    Quello che vorrei è:
    - Entro nella pagina e tramite una chiamata ajax faccio una richiesta a questa pagina php (il codice è sotto)
    - Ogni qualvolta ci sono nuovi messaggi li manda al client

    IL PROBLEMA:
    Mi metto in ascolto, ricevo il primo messaggio, quando lo script deve inviare il secondo messaggio, oltre ad inviarmi il secondo mi reinvia ancora il primo, perchè?

    Grazie!

    codice:
    <?php
    ob_start();
    define( 'MESSAGES_CHECK_INTERVAL', 250000 );
    
    //Connect to database
    $conn = mysql_connect("localhost","root","root");
    $select = mysql_select_db("polling",$conn) or die (mysql_error());
    $last_time=$_GET['last_time'];
    
    while (true){
        $last = check();
    
    	foreach ( $last as $msg ){
    		$last_time=$msg["time"];
    		echo ($msg["text"]);
    	}
    	
    
        usleep( MESSAGES_CHECK_INTERVAL );
    }
    
    function check(){
    	global $last_time,$conn;
    	//Retrieve data
    
    	$array=array();
    	$retval = mysql_query( "SELECT * FROM chat WHERE time>".$last_time, $conn );
    	while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
    		array_push($array,$row);
    	
    	return $array;
    }
    
    function wr($text){
    	echo $text;
    	flush();
    	ob_flush();	
    }
    
    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    dando un'occhiata veloce al codice l'errore potrebbe essere questo:

    Codice PHP:
    $retval mysql_query"SELECT * FROM chat WHERE time>".$last_time$conn ); 
    se il formato è questo 12:59:59 allora devi mettere gli apici a last_time,

    Codice PHP:
    $retval mysql_query("SELECT * FROM chat WHERE time>'$last_time'"); 
    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    500
    Nono sono timestamp...

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    se il formato di $last_time fosse:
    '2010-10-10 10:10:10' devi metterci gli apici
    invece se fosse:
    20101010101010
    controlla che ci siano tutti i numero, perché se il formatto non è valido $last_time diventa:
    00000000000000
    quindi time sarebbe sempre maggiore di $last_time
    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    500
    Sisi quello è corretto, il problema è quello sopra elencato, non riesco a capire davvero da dove proviene
    grazie per la disponibilità

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.