esta es más una pregunta sin código, ya que no creo que sea tan importante con respecto a mi pregunta.
En resumen, estoy creando una aplicación donde los usuarios crean un perfil. Cada usuario tiene una cantidad de créditos que puede utilizar para promocionar su perfil.
¿Cómo funciona la promoción?
Cada usuario tiene un campo "última actualización" en la base de datos, después de lo cual se ordenan en la página de inicio. Cuando un usuario activa la promoción a través de una llamada API, ejecuto un setInterval de X milisegundos (proporcionado por el usuario).
Cada X milisegundos, el campo "última actualización" del usuario recibe una marca de tiempo y se restan X créditos de su cuenta. Una vez que el usuario se queda sin créditos, setInterval se detiene.
Mi(s) pregunta(s) actual(es)
¿Cómo es esto en cuanto al rendimiento, considerando el hecho de que podría haber miles de esas llamadas, lo que resultaría en miles de funciones setInterval ejecutándose al mismo tiempo?
¿Hay alguna otra manera de abordar esto?
¡Gracias!
Sería mejor calcular todo a pedido cuando sea necesario. Suponiendo que la cantidad de créditos utilizados depende de cuánto tiempo se ha estado mostrando la promoción, puede almacenar la hora de inicio en la base de datos y luego usar la hora actual para calcular cuántos créditos quedan en función del tiempo transcurrido. Esto daría como resultado muchas menos operaciones en comparación con ejecutar una función cada pocos milisegundos.
Si realmente tiene que hacer esto con un intervalo, sería mejor ejecutar uno cada 5 segundos más o menos (número aleatorio). Dado que esto está interactuando con la base de datos, eso puede ser demasiada carga.
Simplemente hacer las cosas a pedido cuando entra la API de un usuario debería ser la opción más limpia.