Zu den Updates:
Einige verwenden CRON-Jobs, die von Zeit zu Zeit auf eine bestimmte PHP-Seite gelangen.
Einige verwenden CRON-Jobs und führen diesmal einen bestimmten Prozess aus.
Ein anderer Ansatz besteht darin, "just in time" -Updates durchzuführen. Wenn eine Seite geladen wird, führen Sie alle ausstehenden Updates durch und führen Sie sie zu diesem Zeitpunkt aus. Dies ist im Allgemeinen das, was Sie tun müssen, wenn Sie keine CRON-Jobs oder Prozesse mit langer Laufzeit ausführen können.
Schließlich führen andere die gesamte Webanwendung als einen Prozess aus, sodass sie jederzeit aktualisieren können, wenn sie sehen, dass es Zeit ist.
Das endgültige System ist das beste, wenn Sie diese Option zur Verfügung haben, da Sie die Daten im Speicher speichern können. Das Aktualisieren einiger tausend Spieler einmal pro Minute ist trivial, wenn Sie nur Daten im RAM ändern, anstatt in eine herkömmliche SQL-Datenbank schreiben zu müssen.
Aber wenn Sie diesen Luxus nicht haben, können Sie eine Art Caching verwenden. So etwas wie memcached kann eine Option sein (abhängig von Ihrem Hosting), die einen halben Weg zwischen Speicher und Datenbank darstellt. Sie können transiente Werte im Memcache speichern und nur dann in der Datenbank speichern, wenn dies unbedingt erforderlich ist.
Zwischen Memcache und einer herkömmlichen SQL-Datenbank gibt es andere Optionen, z. die verschiedenen Schlüssel- / Wertspeicher oder Dokumentenspeicher: Dinge wie MongoDB , CouchDB , die Amazon- oder Google-Angebote usw., dh. alle Systeme unter dem Oberbegriff NoSQL . Diese bieten Ihnen normalerweise weder die generische Abfrageleistung noch immer die gleichen Sicherheitsgarantien wie bei einer herkömmlichen Datenbank, sind jedoch häufig viel schneller im Betrieb. (Was nicht so überraschend ist, da sie weniger für Sie tun.)
Dies setzt jedoch voraus, dass eine normale Datenbank die Last nicht bewältigen kann. In den meisten Fällen ist dies wahrscheinlich der Fall. Wenn ich 10.000 UPDATE-Aufrufe pro Minute ausführen muss, um die Ressourcenebene zu erhöhen, ist dies nicht sehr skalierbar, sobald Sie alles andere hinzufügen. Wenn Sie dies jedoch ändern, um die Ressource für alle Benutzer mit einem SQL-Aufruf zu aktualisieren, sehen die Dinge plötzlich viel positiver aus. Überschätzen Sie also nicht, wie teuer eine bestimmte Funktion ist, da sie häufig effizienter implementiert werden kann.