Cytat(ShadowD @ 21.01.2012, 14:44:46 )
Głupota, głupota - masz wielki błąd zamysłowy, co powiesz na usera który wybuduje budynek i wyłączy przeglądarkę? Wchodząc ponownie ma znów zacząć go budować?
Takie rozwiązanie jest błędne, tworzysz tabelę w bazie "budowane" i gdy ktoś zacznie budować budynek zapisujesz do niej rekord z czasem w jakim budynek zostanie ukończony, cronem sprawdzasz co minutę czy czas aktualny jest równy z tym z bazy i jeśli tak dodajesz punkty. Jeśli chcesz licznik w js - pobierasz z tabeli "budowane" czas zakończenia i odliczasz od aktualnego. Najlepiej zapisywać czas typu time(), do obliczeń separatory - i +, zamiana na datę - date(), drugi argument.
Jeśli chcesz bardziej profesjonalnie, tabela budujemy może mieć rekord "zbudowane", cron odświeża się co 1 min, a budynek może wybudować się w jej połowie więc user może mieć na liczniku 0, a cron odpali się za 30sec, w takim przypadku można ręcznie odświeżyć (po kliku od usera) jeśli czas ==0 dodajesz punkty i w tabele przy wpisie dodajesz zbudowane=1, do tego do crona potrzebujesz jeszcze jednego warunku by budynek nie skoczył o 2lvl do góry sprawdzający właśnie zbudowane=1. Cron może usuwać wpisy, ręczne odświeżanie też może usuwać zamiast dodawać =1.
Opis działania masz, posługiwanie się if, time(), date() i proste polecenia mysql w sieci. ;-)
Po co tutaj crona wpychać. Można przecież zrobić to jeszcze łatwiej. Otóż tak jak napisałeś robi sobie tą tabelę budowane i przy ładowaniu strony te dane są pobierane, a JS odlicza czas do 0, gdy dojdzie do 0 po prostu odświeża przeglądarkę. Nawet jeżeli użytkownikowi komp zmuli to i tak nie wpłynie to na wynik budowy, bo czas zakończenia jest zapisany, a przy odświeżaniu strony można sprawdzać czy zakończona została budowa użytkownika o tym ID.