Info o trwajacych kalkulacjach tury

r0bson

Info o trwajacych kalkulacjach tury

Nieprzeczytany post autor: r0bson »

Czas kalkulacji tury zaczyna się wydłużać, z tego co sprawdziłem sięga nawet 30 sekund, a w tym czasie przegladajac firmy zdarzaja się zonki, jak coś powinno być, a tego nie ma, choć gorsza sytuacja jest jak się nie wie, że powinno coś być i nie zajrzy się chwilkę później.
Dlatego proponuję dodać małe info o tym, że trwa kalkulacja tury. Dodanie czegoś takiego nie powinno być kosztowne do wykonania, a jeden wyraz, np. "Liczę..." nad paskiem energii w czerwonym odcieniu znacznie umiliłby grę ;) Choć nie zmienia to faktu, że wraz ze wzrostem liczby graczy trzeba będzie rozbić proces kalkulacji, albo przenieść się na inny serwer...
stvoor
Posty: 1619
Rejestracja: 1 marca 2011, o 13:20

Re: Info o trwajacych kalkulacjach tury

Nieprzeczytany post autor: stvoor »

Pomysle cos o tym, w tej chwili ture przelicza kilka roznych skryptow wiec rozbijanie ich na kolejne drobne jest juz prawie niemozliwe.
Z tego samego powodu, ze jest to kilka roznych skryptow trudno stwierdzic ktory konczy dzialac ostatni i kiedy dokladnie konczy sie przeliczanie tury.
mmalyska

Re: Info o trwajacych kalkulacjach tury

Nieprzeczytany post autor: mmalyska »

a nie ma czegoś takiego w php jak zwracanie wartości przez funkcję (program) ? np w języku C jest takie coś, że jak funkcja(program)kończy pracę to można zrobić tak, że po wykonaniu zwraca wartość, i wiadomo czy się dobrze wykonał i można kontynuować, czy trzeba zrobić coś innego.
r0bson

Re: Info o trwajacych kalkulacjach tury

Nieprzeczytany post autor: r0bson »

Najprostszym rozwiazaniem powinno być przydzielenie do każdego skryptu bool'a umieszczonego nadrzędnie i na ich podstawie (wszystkie == true - skończono) ustawiać głównego, który decyduje o dodaniu, badź nie, jednego spana, choć nie wiem czy wprowadzenie czegoś takiego nie zrobiłoby zbyt dużego bałaganu.

Tak się chwile zastanawiajac przyszły mi do głowy jeszcze 2 rozwiazania, choć będa one wymagały znacznej reorganizacji kodu (z tego co zauważyłem to na 99.99% skrypty działaja dla atrybutu (działka, energia, zdrowie itd)) i jeśli taki sposób obliczeń jest konieczny, z racji na zależność obliczeń pomiędzy różnymi użytkownikami to nie czytaj dalej ;)
Oba rozwiazania opieraja się o rozdzielenie obliczeń na użytkownika, czyli dla usera takiego oblicz zdrowie, energie, przeleć przez biznesy, zrób coś jeszcze i bierz się za nastepnego.ę

Opcja 1: Priorytetowanie aktywnych użytkowników - wpierw obliczać tych co w danej chwili zagladaja, np robili coś w ciagu ostatnich 10 minut. Dopiero po zakończeniu tych aktywnych przejść do nieaktywnych, którzy nie potrzebuja szybko aktualnego stanu.
Rozwiazanie takie sprawdzi się do czasu, aż będzie tylu aktywnych userów, co teraz jest ogółem, czyli i tak niewiele...

Opcja 2: Indywidualny czas rozpoczęcia tury, czyli np użytkownicy 1-10 maja kalkulacje tury o 10:00:00, użytkownicy 11-20 o 10:00:01, użytkownicy 21-30 o 10:00:02 itd. Rozwiazanie takie pozwoli na równomierne rozłożenie obciażenia, ale traci się ten przywilej odświeżania o jasno określonym czasie, każdy sam musiałby sobie to sprawdzać.

To tyle z moich pomysłów przy smarowaniu chleba ;)
Sugestie co do rozwiazania już masz, a na ile to możliwe (o ile w ogóle) i co rzeczywiście zrobić to już sam najlepiej będziesz wiedział :D