Per quanto riguarda gli aggiornamenti:
Alcuni usano lavori CRON che colpiscono una determinata pagina PHP ogni tanto.
Alcuni usano lavori CRON, questa volta eseguendo un certo processo.
Un altro approccio è quello di fare aggiornamenti "just in time" - ogni volta che viene caricata una pagina, eseguire tutti gli aggiornamenti in sospeso ed eseguirli a quel punto. Questo è generalmente ciò che devi fare se non riesci a eseguire lavori CRON o processi di lunga durata.
Infine, altri stanno eseguendo l'intera applicazione Web come un processo, in modo che possano aggiornare ogni volta che vedono che è il momento.
Il sistema finale è il migliore se hai quell'opzione disponibile in quanto puoi archiviare i dati in memoria. L'aggiornamento di alcune migliaia di giocatori una volta al minuto è banale se stai semplicemente modificando i dati nella RAM piuttosto che dover scrivere su un database SQL tradizionale.
Ma se non hai quel lusso, puoi usare una sorta di cache. Qualcosa come memcached può essere un'opzione (dipende dal tuo hosting) che è un punto a metà strada tra la memoria e un database. È possibile memorizzare valori transitori in memcache e salvarli nel DB solo quando assolutamente necessario.
Tra memcache e un database SQL tradizionale ci sono altre opzioni, ad es. i vari negozi chiave / valore o negozi di documenti: cose come MongoDB , CouchDB , le offerte Amazon o Google, ecc ... vale a dire. tutti i sistemi con il termine NoSQL . Questi in genere non offrono il potere di interrogazione generico né sempre le stesse garanzie di sicurezza di un database tradizionale ma spesso sono molto più veloci nel funzionamento. (Il che non è così sorprendente, perché stanno facendo di meno per te.)
Ma tutto ciò presuppone che un normale database non sia in grado di gestire il carico. In effetti, nella maggior parte dei casi probabilmente può. Se devo inviare 10.000 chiamate UPDATE al minuto per aumentare i livelli di risorse, non è molto scalabile una volta che inizi ad aggiungere tutto il resto. Ma se lo cambi per aggiornare la risorsa per tutti con 1 chiamata SQL, improvvisamente le cose sembrano molto più positive. Quindi non sopravvalutare il costo di una determinata funzionalità, poiché spesso può essere implementata in una forma più efficiente.