Reklama
Pokazuje wyniki od 1 do 6 z 6

Temat: [Web] w jaki sposób triggerować sprawdzanie wartości w BD

  1. #1

    Data rejestracji
    2007
    Położenie
    :D
    Posty
    269
    Siła reputacji
    18

    Domyślny [Web] w jaki sposób triggerować sprawdzanie wartości w BD

    Witam
    Pisze grę przeglądarkową używając PHP i utknąłem na takim czymś:
    - chciałbym aby każda postać w grze posiadała możliwość kupowania boosterów na statystyki. Jednakże boostery miałby swój okrełsony czas np 1h, po którym efekt boostera przestwałby działać.
    W jaki sposób sprawdzać godzinę - GDY UŻYTKOWNIK NIE JEST ZALOGOWANY?.

    Póki co napisałem sobie funkcje, które sprawdzają mi timestampy w BD i odliczają czas. Jednakże problem jest taki, że aby funkcja została wywołana, o dana strona powinna zostać wywołana, czyli user powinien się na przykład zalogowac. W przypadku kiedy user się nie zaloguje, to booster trwa i trwa, nawet jeżeli już jest po czasie. Dopiero gdy wejdzie na postać, wyskakuje komunikart, iż booster się skończył i dopiero wtedy efekt jest ściagany - co nie bardzo mi odpowiada.

    Co powinienem googlować?
    Da się to ugryźć w PHP, czy muszę dokleić jakiś inny język?
    Bywalec forum od marca 2007 roku.

  2. #2
    Avatar doniuu
    Data rejestracji
    2015
    Posty
    57
    Siła reputacji
    9

    Domyślny

    niewiele mi wiadomo o tym jakich technologii w tym php uzywasz ale mozesz

    a) napisac skrypt (np w php) i wrzucic go do crona (linux)/task service (windows czy jak oni to tam nazywaja) zeby sie uruchamial np co 5 minutek, wyszukiwal wszystkich cwaniakow ktorym powinien wygasnac boost, no i wygasic go.
    b) uzyc jakiejs kolejki taskow z background workerami. w pythonie popularne jest celery, w php tez pewnie cos jest.

  3. Reklama
  4. #3
    Avatar misiekz
    Data rejestracji
    2006
    Położenie
    Toruń :)
    Wiek
    33
    Posty
    54
    Siła reputacji
    18

    Domyślny

    Jako tako na samym zapytaniu BD nie ma możliwości na ustawienie czy wyjęcie czasu. Możesz zrobić co najwyżej zapytanie co powiedzmy xx sekund. Jednak takie rozwiązanie może sprawić , że przy sporej ilości graczy po prostu zawiesisz bazę tak wielką ilością zapytań.
    To co realne jedynie , to po prostu wyciągnięcie godziny i dodanie do niej 1h bezwzględnie wyłączając boosta.

    Edit:

    Pomysł jaki mi wpadł do głowy, to odpalanie eventa on click na stronie. .onClick("Start zegar", tutaj zmienna w ktorej bedziesz przechowywal czas startu) i ponownie na event powiedzmy bez "focus" albo po kliknięciu wyloguj , boost stopuje i wysyła zużyty czas przy logowaniu sprawdzac wtedy czas pozostały w bd. Ograniczysz wtedy flood updatowy i jednoczesnie bedzie to zgrabniejsze.
    Ostatnio zmieniony przez misiekz : 13-04-2017, 11:59
    As a unit we stand and united we fall...

  5. #4

    Data rejestracji
    2007
    Położenie
    :D
    Posty
    269
    Siła reputacji
    18

    Domyślny

    @up
    Tak, ale w dalszym ciągu bierzemy pod uwagę, że boost:
    - leci podczas bycia online
    - musi być jakikolwiek ruch na stronie aby następowała jakakolwiek zmiana wartosci

    Ja bym chciał aby boost leciał bezwzględnie na to czy jestesmy online czy nie. Odpalonyo 13:00, konczy sie o 14:00. A to czy my jestesmy online, czy nie, to bez znaczenia. O 14:01 nasza postac posiada brak efektu boostera i inni gracze o 14:01 widza rowniez brak efektu. (efekt to np statystyki 20% wieksze, wiec walczac na arenie postac bedzie bez boostera juz o 14:01)
    Bywalec forum od marca 2007 roku.

  6. #5
    Avatar doniuu
    Data rejestracji
    2015
    Posty
    57
    Siła reputacji
    9

    Domyślny

    dlatego musisz robic to po stronie serwera, w tle. przeczytaj moj post wyzej.

  7. #6
    Avatar misiekz
    Data rejestracji
    2006
    Położenie
    Toruń :)
    Wiek
    33
    Posty
    54
    Siła reputacji
    18

    Domyślny

    Masz funkcję Date()
    <?php
    echo "Today is " . date("Y/m/d") . "<br>";
    echo "Today is " . date("Y.m.d") . "<br>";
    echo "Today is " . date("Y-m-d") . "<br>";
    echo "Today is " . date("l");
    ?>
    <?php
    echo "The time is " . date("h:i:sa");
    ?>
    Bierzesz godzinę wrzucasz do bazy start date na evencie robisz , że wyłącza po godzinie boosta bezwzględnie. Przedłużenie tylko z godziny na godzine wtedy.
    As a unit we stand and united we fall...

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Sprzedam Nóż CSGO M9 Bayonet|Crimson Web|Field Tested
    Przez Riko15 w dziale Giełda
    Odpowiedzi: 2
    Ostatni post: 27-08-2015, 14:34
  2. Web Design
    Przez Haan w dziale Artyści
    Odpowiedzi: 103
    Ostatni post: 28-10-2013, 17:15
  3. Odpowiedzi: 6
    Ostatni post: 05-05-2012, 16:35
  4. Web-gadu "UWAGA: W trosce o bezpieczeństwo..."
    Przez Pumpkin w dziale Sprzęt i oprogramowanie
    Odpowiedzi: 1
    Ostatni post: 19-10-2011, 15:48

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •