![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 2 Dołączył: 27.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam !
Mam w serwisie system przeliczania niektórych elementów, ogólnie jest on ustawiony co 3 sek (poprzez bazę danych). W skrócie wygląda to tak:
kod działa, jednak średnio raz na 2.000 przeliczeń dzieją się rzeczy typu: case 1 misja1 ( $CurrentFleet ); wykona się dwa razy, pomnażając obytek użytkownika (czy misja 2, zależnie jaką misje wybierze uzytkownik). Wykona się dwa razy, użytkownik dostanie dwie wiadomości o przeliczeniu ale dobytek pozostaje bez zmian. Skrypt na testach działał wyśmienicie, jednak gdy przyszło do gry kilkuset graczy niestety już tak kolorowo nie jest. Proszę o wypowiedź kogoś doświadczonego. Skrypt działa z bazą mysql. Ten post edytował Deusx 26.02.2012, 21:15:52 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 4 Dołączył: 22.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Doświadczony ze mnie żaden, kilka ładnych lat temu grałem chwilowo w Ogame (czy cos tego typu) i administracja tej gry także, miała problem tego samego typu co Ty - rozwiązali to poprzez dodanie kolejnych warunków do spełnienia w if`ie. Myślę, że warto spróbować...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 2 Dołączył: 27.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Czyli twierdzisz, że ma sens dodanie kolejnych zabezpieczeń, nie tylko ogólne wyciąganie z bazy ?
Przykład: Pierw rekord pobiera, następnie od razu go aktualizuje jako wykonany, następnie wykonuje określoną w "misja1" czynność A przed pobieraniem sprawdza, czy nie został on uprzednio aktualizowany, jako wykonany ? Myślałem o tym, jednak sądze, że błąd leży po innej stronie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 10:42 |