Domanda

Sto progettando una chat-come applicazione web, dove ogni volta che uno i messaggi degli utenti qualcosa, tutti gli altri utenti (che è, le persone con il loro browser che punta a quel sito) otterrebbe aggiornamenti in tempo reale. La scelta comune per questo è la messaggistica cometa in stile utilizzando richieste AJAX-polling lungo. Scrivendo la parte client-side con jQuery non è un gran problema.

Ma mi chiedo come meglio implementare la parte lato server in PHP. I messaggi / messaggi verranno archiviati in MySQL e la questione è: Dopo aver scritto un nuovo post al database, come faccio a notificare tutte le richieste di attesa, che i dati sono disponibili per loro senza usando polling? Polling avrebbe funzionato, ma è brutto e lo spreco di risorse, in tal modo, questo è quello che non voglio:

while (timeout not reached) {
    if ($database->has_changes())
        break;
    sleep(1);
}
handle_changes_if_any();

C'è una sorta di funzione di MySQL che mi avrebbe aiutato qui? Sarebbe una sorta di IPC aiuto? Il server esegue Apache.

È stato utile?

Soluzione

È già menzionato una possibile soluzione, che è quello di utilizzare AJAX polling per interrogare uno script periodicamente gli aggiornamenti. Polling sarebbe fatto sul lato client, e non ha nulla a che fare con il lato server.

Un'altra opzione sarebbe quella di utilizzare un server cometa come Meteor . Con questo approccio, lo script PHP può notificare al server cometa dei nuovi messaggi ed i clienti collegati riceveranno gli aggiornamenti. Poi è solo a voi di scrivere il codice JavaScript per visualizzare l'aggiornamento per l'utente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top