Sto sviluppando un progetto mio con in mente la scalabilità e sono arrivato a un bivio. Sul mio sito web vorrei rilevare se un utente è online o meno. E non riesco a pensare al modo migliore per gestirlo. Il modo in cui pensavo sarebbe qualcosa in questo senso (in psuedocodarlo):PHP: il modo più efficiente per tenere traccia se un utente è online?
// SQL user table:
user {
"name": "blah blah",
"email": "[email protected]",
"online": false
}
Così ogni volta che l'utente accede ho potuto aggiornare la sua colonna online
a true
. Tuttavia questo alla fine porterebbe a interrogazioni SQL che si verificano ogni volta che un utente accede e, se capita che io dica, 10 accessi al secondo, beh, si stanno verificando molte query. Un altro modo in cui ho pensato che avrei potuto fare la stessa cosa, ma in una tabella diversa:
// Activity table:
activity {
"user_id": 2,
"online": true
}
Per qualche ragione credo che porterebbe a un minore consumo di memoria a causa della separazione dalla tabella user
. Tuttavia non sono sicuro se avrebbe alcun effetto reale sulle prestazioni.
Quindi se potessi benedirmi con la tua intuizione sarei più che grato, grazie.
Sembra un'ottimizzazione prematura. Non mi preoccuperei per ora. Se e quando il tuo sito inizia a rallentare, sono sicuro che sarai in grado di identificare colli di bottiglia molto più significativi di questo. – Okonomiyaki3000
È normale eseguire un numero di query SQL ogni volta che viene caricata una nuova pagina. Una query aggiuntiva non sarà visibile. – xbonez