En cuanto a las actualizaciones:
Algunos usan trabajos CRON que llegan a una determinada página PHP de vez en cuando.
Algunos usan trabajos CRON, esta vez ejecutando cierto proceso.
Otro enfoque es hacer actualizaciones 'justo a tiempo': cada vez que se carga una página, ejecuta las actualizaciones pendientes y realizalas en ese punto. Generalmente, esto es lo que debe hacer si no puede ejecutar trabajos CRON o procesos de larga duración.
Finalmente, otros ejecutan toda la aplicación web como un solo proceso, por lo que pueden actualizarse cada vez que lo vean.
El sistema final es el mejor si tiene esa opción disponible, ya que puede almacenar los datos en la memoria. Actualizar unos pocos miles de jugadores una vez por minuto es trivial si solo está cambiando datos en RAM en lugar de tener que escribir en una base de datos SQL tradicional.
Pero si no tiene ese lujo, puede usar algún tipo de almacenamiento en caché. Algo como memcached puede ser una opción (dependiendo de su alojamiento) que es un punto intermedio entre la memoria y una base de datos. Puede almacenar valores transitorios en memcache y solo guardarlos en la base de datos cuando sea absolutamente necesario.
Entre memcache y una base de datos SQL tradicional hay otras opciones, por ejemplo. las diversas tiendas de clave / valor o tiendas de documentos: cosas como MongoDB , CouchDB , las ofertas de Amazon o Google, etc. Todos los sistemas bajo el término general NoSQL . Por lo general, estos no le brindan el poder de consulta genérico ni siempre las mismas garantías de seguridad de una base de datos tradicional, pero a menudo son mucho más rápidos en la operación. (Lo cual no es tan sorprendente, ya que están haciendo menos por ti).
Pero todo esto supone que una base de datos normal no puede manejar la carga. De hecho, en la mayoría de los casos probablemente sí. Si tengo que emitir 10,000 llamadas de ACTUALIZACIÓN por minuto para aumentar los niveles de recursos, eso no es muy escalable una vez que comience a agregar todo lo demás en la parte superior. Pero si cambia eso para actualizar el recurso para todos con 1 llamada SQL, de repente las cosas se ven mucho más positivas. Por lo tanto, no sobreestime lo costosa que es cierta característica, ya que a menudo se puede implementar de una manera más eficiente.