Ich muss hier in weiten Teilen wiedersprechen:
Ein cronjob der alle 5 min ausgefuehrt wird ist hier bei weitem nicht genug. Bei Echtzeitspielen geht es schliesslich eher um Bruchteile von Sekunden. Andere Entwickler werden sagen, dass es sich ab 20 Millisekunden lohnt wieder zu warten.
Mit den events machst du das einfach so, dass du ein php-script auf endlosschleife laufen leasst (set_timeout(0) oder so aehnlich um zu verhindern dass das Script wegen ausfuerdauer abgebrochen wird.) Dieses Script greift auf eine
mysql-Tabelle zu, sieht nach, wann das naechste event stattfindet (angriff usw.), und sleep()-t sich bis zu diesem Zeitpunkt. Dann fuehrt es die noetige aktion aus und schaut nach, was als naechstes an der Reihe ist. Wenn der Abstand zum naechsten Ereignis zu gross ist (mehr als ein paar Sekunden) willst du wahrscheinlich das script nur sehr kurz sleepen um zu verhindern, dass ein neues Element hinzukommt, welches ein kuerzere Zeit hat.
Und dann nimmst du -ja- Methode 3, aber noch eingeschraenkter: Sobald du auf eine infomation
zugreifst aktualisiserst du diese. Also zum Beispiel wenn du die momentane menge ressis anzeigst, dann berechnest du wieviele ressis in der zwischenzeit produziert worden sind.
Alles, was das lineare Modell der veraenderung stoert muss natuerlich auch wieder ein event sein. Also wenn Beispielsweise ein Rohstoffproduziernde Mine fertig ist, muss dessen fertigstellung ein event ausloesen, dass die Rohstoffe neu berechnet und dann die sekuendliche neuproduktion hochsetzt.
Und ja, eine
mysql-Verbindung reicht aus. Man muss eben nur geschickt programmieren und bei jedem event alles von jedem Benutzer neu zu berechnen ist nicht nur unnoetig, sondern auch viiel zu langsam.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.
Have a lot of fun!