Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Troppe richieste ajax

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192

    Troppe richieste ajax

    Ho creato una chat in stile facebook con tante richieste ajax, Ad esempio, una ti dice ogni secondo quanti sono connessi. Una chi è connesso, una che ti aggiorna sui messaggi, e altre ancora. Il problema è che a volte si bugga e necessito di tutte queste funzioni. Come posso riassumerle tutta in una unica funzione? o come posso evitare che si bugghi?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    A) Allungato i tempi tra una richiesta e l'altra (1 sec un po poco, se non hai una situazione in tempo reale dei connessi si sopravvive)
    B) Ottimizzare le query sql
    C) Diminuendo le richieste ajax mantenendo solo quelle strettamente necessarie
    D) Se sei in hosting condiviso non puoi pretendere più di tanto, molti provider limitano le query per non sovraccaricare la macchina
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    cosa è hosting condiviso?
    Attualmente utilizzo altervista come prova, ma aruba come ufficiale

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    Allora, attualmente ho queste richieste ajax nella homepage.
    Status: Aggiorna il tuo status: disponibile, occupato, assente, invisibile. (funzione che viene richiamata al onclick dello stato).
    Quanti amici online (Chat): Ogni secondo viene richiamato per vedere quanti amici sono connessi
    Chi è connesso(Chat): Vedere ogni secondo gli amici online
    Invio messaggio(chat): Invia il messaggio e lo memorizza nel database
    Totale dei messaggi(chat):Inserisce ogni secondo tutti i messaggi tra gli utenti

    Penso che tutti siano necessari.. o si possono limitare?

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da dimoshake
    cosa è hosting condiviso?
    Un server/pc che ospita x siti 100/200 o più
    Attualmente utilizzo altervista come prova, ma aruba come ufficiale
    Il problema lo riscontri su entrambi i siti?
    Originariamente inviato da dimoshake
    Allora, attualmente ho queste richieste ajax nella homepage.
    Status: Aggiorna il tuo status: disponibile, occupato, assente, invisibile. (funzione che viene richiamata al onclick dello stato).
    Dovrebbe essere ininfluente poi dipende da quanti utenti ha il sito
    Quanti amici online (Chat): Ogni secondo viene richiamato per vedere quanti amici sono connessi
    Chi è connesso(Chat): Vedere ogni secondo gli amici online
    Queste due si possono unificare e ritardarle almeno ad 1 minuto
    Invio messaggio(chat): Invia il messaggio e lo memorizza nel database
    Dovrebbe essere ininfluente poi dipende da quanti utenti ha il sito
    Totale dei messaggi(chat):Inserisce ogni secondo tutti i messaggi tra gli utenti
    Ritardarla almeno ad 1 minuto

    Penso che tutti siano necessari.. o si possono limitare?
    E' soggettivo dato che pensi siano necessarie la risposta è no, ma considera che più richieste fai al server e più utenti hai connessi peggio andrà il sito
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    come ti diceva Andrea, anche secondo me e' da rivedere sia sul server che sul client:
    il client manda sempre e solo una richiesta temporizzata
    il server valuta che variazioni ci sono ripetto all' ultima risposta mandata a quel client e serve solo il necessario ad aggiornare

    ciao e buon 2012

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    1 minuto mi sembra troppo eccessivo...
    5 secondi posso accettarli.. ma un minuto...

    questa è la query che riguarda il quantionline funziona e si trova in chat/
    Codice PHP:
    $v $user['username'];
    $a mysql_fetch_assoc(mysql_query("SELECT id FROM utenti WHERE username='".$v."'"));
    $d $a['id'];
    $_SESSION['uid']= $d;

    $sql "SELECT * FROM amici WHERE id1='".$d."' AND relazione='true'"
    $result mysql_query($sql); 

    $num_rows 0
    while(
    $array mysql_fetch_array($result)) 

       
    $a "SELECT * FROM utenti WHERE id='".$array['id2']."' AND status='1'"
       
    $b mysql_query($a); 
       
    $num_rows += mysql_num_rows($b); 


    $sqla "SELECT * FROM amici WHERE id2='".$d."' AND relazione='true'"
    $resulta mysql_query($sqla); 

    $num_rowsa 0
    while(
    $arraya mysql_fetch_array($resulta)) 

       
    $aa "SELECT * FROM utenti WHERE id='".$arraya['id1']."' AND status='1'"
       
    $ba mysql_query($aa); 
       
    $num_rowsa += mysql_num_rows($ba); 


    $u $num_rows+$num_rowsa;

    echo 
    "Chat (".$u.")";
    }
    ?> 
    Poi nel file .js ci sono molte funzioni, ho provato ad unire due richieste ajax ma il "quanti online" non funziona più, pure questa si trova in chat/
    Codice PHP:
    function quantion(){
    setTimeout(function(){chatbase('quantion')}, 5000);
    setTimeout("quantion()"5001)
    }
    function 
    chion(){
    setTimeout(function(){chatbase('chion')}, 4000);
    setTimeout("chion()"4001)
    }
        function 
    chatbase(quale){
        if (
    window.XMLHttpRequest){
            
    xmlhttp=new XMLHttpRequest();
        }else{
            
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        
    xmlhttp.onreadystatechange=function(){
            if(
    xmlhttp.readyState==&& xmlhttp.status==200){
                if(
    quale == 'chion'){
                    
    document.getElementById("a").innerHTML="<table><tr><td width='100'>"+xmlhttp.responseText+"<td></tr></table>";
                }else if (
    quale == 'quantion'){
                    
    document.getElementById("quantion").innerHTML=xmlhttp.responseText;
                }
            }
        }
          
            if(
    quale == 'chion'){
                
    xmlhttp.open("GET","chat/chatonline.php",true);
            }else if(
    quale == 'quantion'){
                
    xmlhttp.open("GET","chat/quantionline.php",true);
            }

        
    xmlhttp.send();

        } 
    poi c'è la pagina.php che richiama il file javascript che a sua volta tramite ajax manda la richiesta alla query

    Buon anno anche a te

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    La parte php gestiscila nel forum specifico.
    Quanto intendevo unire le richieste:
    Quanti amici online (Chat): Ogni secondo viene richiamato per vedere quanti amici sono connessi
    Chi è connesso(Chat): Vedere ogni secondo gli amici online
    Mi sono spiegato male non devi unire le chiamate ajax devi unire la query sql cioè fare una chiamata ajax che eseguirà una query unica che estrapolerà i due dati
    Se vuoi proseguire con chiamate a secondi liberissimo, sempre che il server te lo permetta, resta il fatto più ristrette saranno le richieste maggior carico ci sarà per il server e per il client.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.