Estoy desarrollando un proyecto mío teniendo en cuenta la escalabilidad y he llegado a una encrucijada. En mi sitio web me gustaría detectar si un usuario está en línea o no. Y no puedo pensar en la mejor manera de manejar esto. La forma en que estaba pensando sería algo en este sentido (en psuedocode):PHP: ¿la manera más eficiente de rastrear si un usuario está en línea?
// SQL user table:
user {
"name": "blah blah",
"email": "[email protected]",
"online": false
}
Así que cada vez que el usuario inicia sesión en que se pudo actualizar su columna online
a true
. Sin embargo, eso llevaría eventualmente a que las consultas SQL ocurran cada vez que un usuario inicie sesión y si sucede que recibo, por ejemplo, 10 inicios de sesión por segundo, bueno, eso es un montón de consultas. Otra manera pensé que podría hacer lo mismo pero en una tabla diferente:
// Activity table:
activity {
"user_id": 2,
"online": true
}
Por alguna razón yo creo que daría lugar a un menor consumo de memoria debido a la separación de la mesa user
. Sin embargo, no estoy seguro de si tendría algún efecto real en el rendimiento.
Así que si pudieran bendecirme con su visión, estaría más que agradecido, gracias.
Esto parece una optimización prematura. No me preocuparía por el momento. En el caso de que su sitio empiece a ralentizarse, estoy seguro de que podrá identificar cuellos de botella mucho más importantes que este. – Okonomiyaki3000
Es común ejecutar varias consultas SQL cada vez que se carga una página nueva. Una consulta adicional no será perceptible. – xbonez