PHP

aikalaskuri

Miten voin tehdä sellaisen laskurin PHP:llä ei MYsQL tietokannalla, koska selainpelini kaikki resurssit aseet yms tallennetaan tekstitiedostoon. Miten saan niin, että 15min välein jokin tietty muuttuja laskee yhdellä numerolla, vaikka käyttäjä ei olisi edes kirjautuneena. Tai edes kone päällä.

Sen jälkeen luonnollisesti sen pitäisi tallentaa se uusi luku tekstitiedostoon vanhan luvun päälle.

Mieluusti kommentoitua koodia. :)

5

332

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • ratkaista asia

      No ota alkuhetkellä time(), tallenna se nimellä time_alkup ja toinen muuttuja time_kertoja. Kun asialla on väliä, (time()-alkuptime)/15*60. Tuo 15*60 on sekunteja, se määrää jakson pituuden. Laske tuon kaavan tulos, vertaa edelliseen time_kertoja arvoon, jos se on noussut, tiedät kuinka monta kertaa 15 minuutin jakso on kulunut. Lopuksi tallenna se time_kertoja uudeksi arvoksi.

      Tekstitiedostoissa datan pitäminen on melko riskialtista [jos niihin kirjoitetaan], koska kaksi pelaajaa tulee käyttämään samaa tiedostoa yhtäaikaa, sotkien pelin. Asian voisi korjata mutexilla, mutta tietääkseni PHP:ssä ei ole nättiä tapaa tätä toteuttaa. Yksi ja sama pelaajakin voi aiheuttaa kaksi samanaikaisesti suoritettavaa sivunlatausta, esim. kun verkkoyhteydessä on pieni katkos ja molemmat pyynnöt tulevat lähes samanaikaisesti. Vaikka yrittäisit kikkaillakin, sama ongelma säilyy.

      Tietokanta, esim. ilmainen MySQL ratkaisisi ongelman helposti. START TRANSACTION sql:llä ennen muutoksia, ja COMMIT kun muutokset on tehty. Jos tapahtuu virhe, ROLLBACK palauttaa tilanteeseen ennen START TRANSACTIONia.

      • vaihtoehtoinen tapa

        on tehdä cronjob, joka vähentää muuttujia väliajoin.
        Eli crontab -e
        0,15,30,45 * * * * php /polku/php/tiedostoon/joka/hoitaa/15minuutin/tapahtumat.php

        Yhä mutex olisi tarpeen...


      • tietokantojen

        käyttö on minulle outo jutut. Katsoin ohjelmointiputkasta koodivinkkejä, mutta siihen tulee aina teksti, että yhteyttä ei saatu. En ymmärrä.


    • keksa

      tuo luku kait muuttuu relevantiksi vasta kun käytttäjä seuraavan kerran kirjautuu?

      Eikö se voisi olla aikaan sidottu? Lasket sen aina kun käyttäjä pyytää sivua.

      Toinen mahis vois olla se crontabin käyttäminen

      • jo pienen ratkaisun

        mutta se on aikaa vievä. Teen niin, että teen päivitys sivun jonne pääsee vain admini ja kun sille sivulle astutaan niin muuttujat päivittyvät uusiin lukemiin :)

        Eli aika kehno, mutta toimii väliaikaisesti. :)


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kysymys muille miehille

      Onko teille varattu nainen ongelma? Mikään muu naisessa ei töki kun se että hän on varattu. Kamppailen houkutuksen kanss
      Ikävä
      131
      7182
    2. Kaipaisin nyt kosketusta

      jota ei koskaan ole ollut. Saisinpa tuntea kätesi niskallani ja silittelemässä päätäni. Sulaisin varmasti siihen.
      Ikävä
      14
      2559
    3. Imaami kysyy, miksi pojat uivat ilman valvontaa

      Kalajoen särkät ovat usean kilometrin pituiset. Siellä on kylttejä, joissa varoitetaan rannan vaaroista. Siellä ei ole
      Maailman menoa
      264
      1230
    4. Sokea "ystävälle"

      Oletko oikeasti noin sokea?
      Ikävä
      100
      1019
    5. Mansikkatiloilla hyväksikäytetään ukrainalaisia

      Työolot ovat surkeita ja palkka kelvoton. https://yle.fi/a/74-20172942
      Maailman menoa
      161
      947
    6. En ymmärrä käytöstäsi

      Se on ollut eräänlaista hyväksikäyttöä. Että seura kyllä kelpaa palstan välityksellä silloin kun ei ole parempaakaan tek
      Ikävä
      137
      900
    7. Kerrostaloihin ilmalämpöpumput

      Ulkomailla näkee paljon ilmalämpöpumppuja kerrostalojen ulkoseinissä. Mikä estää taloyhtiötä hankkimasta niitä asuntoih
      Sinkut
      71
      897
    8. Kiitoksia kaikille epäasiallisesta sisällöstä liputtaneille

      Se ylimielisyys ja epäasiallisen julkaisun jakaminen ei sitten kantanut.
      Tuusniemi
      79
      764
    9. Kirkonkylän puliveivarit

      Hieman pistää silmään nuo puliukot ja akat kirkonkylän penkeillä ja S-marketin kulmilla. Tarttis varmaan tehdä asialle j
      Karstula
      13
      733
    10. Persaukinen puolankalainen kävi kerjäämässä paitaa

      Ja lippistä. Nauratti suuresti kun katsoin. Kukahan mahtanee olla? Voipi katsoa täältä jutun. https://www.youtube.com
      Puolanka
      18
      711
    Aihe