Mysql
 sql >> Database >  >> RDS >> Mysql

Che è più efficiente per inviare aggiornamenti WebSocket con una modifica del database MySQL

Se usi i websocket, dovresti usare le notifiche dal client. Questo è uno dei loro principali casi d'uso.

Se sei preoccupato per le incongruenze dovute all'interruzione della connessione o a qualcosa che cambia nel mezzo, potresti implementare un sistema simile a HTTP ETags , dove il client invia un codice hash a cui puoi rispondere sul lato server in caso di conflitto durante l'aggiornamento.

Aggiornamento:credo di aver capito un po' male il tuo problema iniziale. Se ho capito correttamente il tuo caso d'uso:stai inviando aggiornamenti del database da un client e successivamente tutti i client collegati devono essere aggiornati. In tal caso, penso che il server dovrebbe inviare i messaggi di aggiornamento dopo che gli aggiornamenti del DB sono stati eseguiti, quindi sono d'accordo con la soluzione 4. Presumo qui che il tuo server websocket sia lo stesso server che esegue PHP e che esegue gli aggiornamenti del DB.

Tuttavia, a seconda del tuo caso d'uso, il client dovrebbe comunque inviare un valore hash alla richiesta successiva identificando la sua "visione del mondo", quindi non eseguiresti aggiornamenti identici più volte se una connessione si interrompe.

Aggiornamento 2:quindi ora si è capito che si utilizza effettivamente un server websocket separato e autonomo. Fondamentalmente hai due diversi server web sul lato server e stai riscontrando un problema su come comunicare tra i due. Questo è un problema reale e consiglierei di utilizzare solo un server alla volta:dai un'occhiata all'utilizzo di Supporto per WebSocket di Apache (sperimentale e non consigliato) o migrare i tuoi script php all'istanza websocket.

Né PHP né Apache sono stati davvero creati pensando ai websocket. È abbastanza facile configurare un server websocket autonomo usando solo PHP, ma potrebbe non essere così facile migrare il resto dello stack PHP su di esso se il codice si basa su Apache/server web. Anche il supporto WebSocket di Apache non è ottimale. Per una vera soluzione websocket, sfortunatamente, la migliore pratica sarebbe l'utilizzo di una tecnologia progettata da zero.