mayu11 - takie propozycje lepiej zachowaj dla siebie.
Crona odradzam w tym przypadku takie rzeczy w takich projektach rozwiązuje się trochę inaczej.
podczas skanowania, ataku, bądź aktywności gracza następuje aktualizacja danych surowców z obliczeniem czasu jaki upłynął od ostatniej aktualizacji co prawda większość gier nie robi tego co minute tylko oblicza przybliżoną wartość wyprodukowaną w tym czasie zwykle dla 1s następuje aktualizacja.
dlaczego tak a nie inaczej ?
WYDAJNOŚĆGdy mamy np 1000(taka malutka gierka

duże i popularne gry mają około 16.000 graczy na serw) graczy i założymy że każdy może posiadać po 9 własnych osad dostajemy 9000 wywołań obliczeń co 1h. jeśli mamy 3 typy surowców otrzymujemy 27000 aktualizacji pól w bazie danych.
Metoda opisana wyżej ogranicza ilość aktualizacji dość ostro z przyczyn logicznych

musiało by się znaleźć 1000 graczy skanujących łącznie 9000 osad w ciągu tej samej sekundy - raczej nierealne

cron w tym przypadku to morderstwo maszyny, spowoduje lagi o pełnej godzinie.
gracze nie aktywni, urlopowicze itp generowali by dodatkowo nie potrzebną ilość zapytań, po co je wykonywać jak nie są potrzebne. Logiczne?
2 sprawa zakładając, że mamy 1000 graczy jaka jest szansa, że wszyscy są zalogowani i aktywni o tej samej godzinie?
co jest lepsze wykonanie 0-1000 aktualizacji na sekundę(300 skanów na raz - jakieś maniaki musiały by klikać

) czy 27000 na raz?
w takich projektach jeśli liczymy na jakiś sukces trzeba myśleć o maksymalnej optymalizacji pod względem wydajności.
z założenie surowce mają wydobywać się wyłącznie teoretycznie, a ich aktualizacja wyłącznie w chwili realnego zapotrzebowania.
Idąc dalej surowce w celu odciążenia bazy danych można pobrać z niej do sesji. W przypadku odświeżania przez użytkownika surowców(klika co 1s i czeka aż będzie miał te parę więcej co mu brakowało

) i aktualizacja ich w sesji.
to tylko wyświetla. w przypadku rozbudowy budynków, skanów przeciwników bądź ataku wykonanie operacji na bazie.
należy pamiętać o optymalizacji kodu aplikacji i bazy danych wraz ze wzrostem aktywności/ rozmiarów bazy, jeśli tego nie zrobimy może okazać się, że nawet 2 dedyki 1na bazę nie będzie nam wystarczyć.
idąc dalej wypadało by blokować dostęp do aktualizowanego wiersza w celu nie nadpisania go podczas innej operacji

np. mamy 2 operacje w tym samym czasie np. atak wroga i próba ucieczki. Co się stanie gdy druga operacja zostanie wykonana podczas gdy pierwsza jeszcze trwa np. zalagowało

.
Tego typu projekty jeśli liczymy na jakikolwiek sukces powinny być pisane z głową i stosować się do praw Murphy'ego!
Co do autora radzę:
po 1 stworzyć dokładny model funkcjonowania gry, zależności itp. projektowanie jest bardzo ważne.
po 2 czy aktualizacja surowców tylko przy logowaniu to dobry wybór? a jak ktoś nie chce się wylogowywać co godzinę?
po 3 wiele osób zabiera się za podobne projekty, pisanie własnego OS itp. zazwyczaj jest to droga "z motyką na słońce". prawdopodobnie natrafisz na trudniejsze problemy, bądź nawet nie będziesz ich świadom.
Nie chodzi o to, że chciałbym zniechęcać takie osoby, ale pierw powinno się zdobyć dość sporą wiedzę z dziedziny zarówno programowania, optymalizacji jak i zabezpieczeń.