[PHP] Come gestire gli utenti online

Marcolino92

Utente Attivo
6 Nov 2012
28
0
1
Ciao, come da titolo mi trovo in difficoltà anche con questo, ho cercato di risolvere da solo ma ho solo prelevato gli utenti quale la loro "Ultima attività", fosse inferiore a un lasso di tempo prestabilito. Ma non credo sia questa la giusta logica perche ovviamente in quel caso il pallino online viene mostrato anche se l'utente ha chiuso il browser fino appunto al prossimo rinnovo o comunque scadenza del tempo stabilito.

Credo bisogna giocare con le sessioni?
Utilizzo Codeigniter con Benedmuns Libreria per la gestione utente
 

macus_adi

Utente Attivo
5 Dic 2017
1.232
77
48
IT/SW
Con socket.io risolvi la gestione della contemporaneità e la gestione live degli utenti in sessione...
In alternativa fai un polling con ajax aggiornando la permanenza agli ultimi x secondi....
 

Marcolino92

Utente Attivo
6 Nov 2012
28
0
1
Ciao, grazie per la tua risposta, potresti farmi un esempio veloce riguardo il polling con ajax?
Si tratta di una normale query che prende gli ultimi collegati in sessione ma che tramite ajax li mette a scaletta aggiornandosi automaticamente?
 

Marcolino92

Utente Attivo
6 Nov 2012
28
0
1
Qualcosa del genere è giusto?

Codice:
<script>
        setInterval(function(){
            $.ajax({
                url: 'URL#####',
                dataType: 'jsonp',
                success: function(result){
                    alert(result);
                },
                error: function(result){
                    alert(result);
                }
            });
        }, 4000);
    </script>
Dove in url inserisco il controller che esegue la query?
 

Marcolino92

Utente Attivo
6 Nov 2012
28
0
1
Mi chiedevo se in termini di utilizzo e buona norma di codice, sia consono usarlo, oppure crea qualche problema riguardo la navigazione, rallentamenti, non so qualcosa di simile ?
 

macus_adi

Utente Attivo
5 Dic 2017
1.232
77
48
IT/SW
Mi chiedevo se in termini di utilizzo e buona norma di codice
Partendo dalla tua logica no!
Le operazioni sul DB le fa il model, il controller appunto controlla e organizza i dati, la view si limita a visualizzarli...
Il long polling "non si usa" quasi più, si cerca di sfruttare altre metodologie....
socket, coap, mqtt etc....
 

Marcolino92

Utente Attivo
6 Nov 2012
28
0
1
Penso di evitare di utilizzarlo allora, comunque ora che realizzo forse non mi ero spiegato molto bene sul mio problema, perche forse tu hai capito che volevo semplicemente aggiornare la visualizzazione di ogni nuova entrata/utente collegato.

Invece avrei proprio bisogno di capire come mostrare correttamente quando un utente è online (mostrando il classico pallino) ma che sopratutto scompaia quando esce dalla sessione. Quello che invece sono riuscito semplicemente a fare è mostrare l'online( quindi il pallino) ogni qualvolta l'utente si collega dicendo banalmente di mostrarmi i risultati dove il campo last_actvity è piu recente, quindi un utente rimane online (pallino verde) anche se è uscito dal sito da 1 ora.
 

macus_adi

Utente Attivo
5 Dic 2017
1.232
77
48
IT/SW
perche forse tu hai capito che volevo semplicemente aggiornare la visualizzazione di ogni nuova entrata/utente collegato
No no, era chiaro... non a caso ti ho detto di usare un long polling...

Invece avrei proprio bisogno di capire come mostrare correttamente quando un utente è online (mostrando il classico pallino) ma che sopratutto scompaia quando esce dalla sessione
Mi pare di aver risposto al primo intervento...
Con socket.io risolvi la gestione della contemporaneità e la gestione live degli utenti in sessione...