Keresés

Új hozzászólás Aktív témák

  • oleslie

    aktív tag

    válasz cucka #13001 üzenetére

    ok. pontatlan volt a megfogalmazás.
    Nem mindenhol tudsz beállítani cronjob -ot.
    Az, hogy a cron (vagy ablakOS -en a megfelelője) elérhető e a rendszeren, nem kérdéses. De az, hogy TE, mint felhasználó, hozzáférsz e, már igen.
    Valamint: fölösleges bonyolítani az oldalt egy ily módon időzített scripttel, miközben az adatbáziskezelővel kényelmesen, és nem utolsó sorban gyorsabban, kevesebb erőforrást felhasználva meg lehet oldani a feladatot.
    Az erőforrásigény téged valószínűleg addig nem fog érdekelni, amíg nem töltesz fel vmilyen hibás scriptet cronra, azzal túlterheled a szervert (láttam már ilyet), amit annak az üzemeltetője úgy old meg, hogy törli a problémás dolgokat, TE pedig old meg ahogy tudod (csináltam már ilyet).

    [ Szerkesztve ]

    Egyszerű életet élek. Ami üres megtöltöm, ami tele van kiűritem

  • lordjancso

    senior tag

    válasz cucka #13001 üzenetére

    Részben egyetértek veled akkor, ha a manát "globálisan" láthatóvá teszi a fejlesztő az oldalon. Tehát mondjuk meg lehet nézni a játékosok adatlapját és ott valós mana értéket szeretnél látni (persze itt is meg lehet kerülni a cron-t). Én így képzeltem el a játékát:

    A belépett játékos csak a saját manájával van elfoglalva, csak azt látja, semmilyen körülmények között nem tudhatja, hogy mennyi manája van az ellenségnek vagy a többi játékosnak.
    Így elég csak belépéskor ellenőrizni, hogy a legutóbbi manahasználat óta mennyi idő telt el, majd megjelenítés előtt megnövelni a mana értékét a kiszámolt mennyiséggel.
    Minden manahasználatkor logolod annak az idejét. Minden manamegjelenéskor elvégzed a vizsgálatot, hogy mennyi idő telt el és mennyivel kell megnövelned a manádat (ez jól megírt játéknál ez nagyon egyszerűen kivitelezhető).

    Ha lehet látni a másik manáját (mondjuk adatlapon keresztül), akkor is elég csak az adott (éppen nézett) játékos manáját vizsgálni és updatelni.

    Szerintem ez lenne a leginkább erőforráshatékony megoldás, mert így egy, maximum kettő játékos manáját kell számolgatni. Főleg ha van sok tíz-százezer játékosod.

    Persze a cron is jó dolog, abszolút nem vagyok ellene, én is használom napi szinten, de csak akkor, ha valóban indokolt. Ebben az esetben én nem tartanám annak (értsd, nem cron-nal csinálnám a fejlesztő helyében).

    Rip and cut and mutilate the innocent, his friends, and again and again and on and on.

  • oleslie

    aktív tag

    válasz cucka #13001 üzenetére

    >Ahol nem elérhető a cron, azok a kétpálcás php webhosting megoldások....
    Értem, tehát a rendelkezésre állás. Az, hogy a szerver soha nem kerül 100% leterhelt állapotba lóf*sz.
    cron legyen, ez a fontosch, különben kétpálcás? :)
    kicsit reklámozom magam.
    Több mint 2 év alatt (2,5 HJE) 2x indítottam újra a szervert. Egyszer ram bővítés, másodjára kernel frissítés miatt. A szokásos (web, levelezés, mysql) mellett futnak játékszerverek is. És ennek ellenére soha nem volt gondom. Azért lennék sufnihosting (kétpálcás?), mert TE nem tudsz önállóan beállítani bármilyen elcseszett scriptet, ami esetleg problémát okozna? Nemhiszem :P
    stat

    [ Szerkesztve ]

    Egyszerű életet élek. Ami üres megtöltöm, ami tele van kiűritem

  • Soak

    veterán

    válasz cucka #13001 üzenetére

    Nem értem miért vagy igy rápörögve a lock-ra . Ugyan megint csak találgatok, de gondolom a játék nem úgy néz ki jellemzően, hogy 1 embert támad 50.000 . Innentől kezdve (még ha lock-olnánk is, de azzal eddig magyaráztam, nem kell) InnoDB motor row-level lock-nál miért olyan nagy probléma ha lockolunk egy sort? Ha még egyszerre 3-5 ember akarja elérni (nem értem hogy miért updatelné egyszerre 3-5, de ugye találgatunk csak) akkor se lenne dráma.

  • Sk8erPeter

    nagyúr

    válasz cucka #13001 üzenetére

    Először is: nyugi, tudtommal egyelőre csak a lehetőségekről és miértekről beszélgetünk, és nem én akarom így vagy úgy megoldani, mert engem nem érint, hanem visszakérdeztem, hogy támaszd alá picit jobban, amit mondtál, mert érdekelt, de a hsz.-ed végére kissé behergelted magad. :DDD

    "Először is szögezzük le, hogy alapnak veszem, hogy egy játéknál nem oldal újratöltéssel oldjuk meg a kliensoldali frissítéseket, hanem ajax-al."
    Őő, ja, de ez nyilvánvaló, szerintem erről nem is érdemes témázni, mivel evidens.

    Amit viszont én szögeznék le előre a félreértések elkerülése érdekében, mert fontos, hogy alapvetően én is jobbnak látom a cronos megoldást, valszeg én is azzal csinálnám, ha én lennék a fejlesztője, mivel ütemezett feladatra használjunk ütemezőt, végül is pont arra való. Tehát én nem a cron ellen beszélek, hanem érdekes témának láttam megvizsgálni a másik oldal lehetőségeit is, ha már felvetették a többiek, hogy meg lehetne oldani anélkül is, tehát azt is érdemes megbeszélni, hogy mi történne abban az esetben, ha NEM cronnal történne a dolog. Én pedig csak azokra a dolgokra reagálok/kérdezek rá, amik esetleg elsőre teljesen egzakt fogalmazás híján (számomra) kérdésesek lehetnek (vagy legalábbis engem érdekelnek). Oké? :D
    Úghogy az "ezt az egész baromságot pusztán azért, mert valamilyen hülye okból kifolyólag nem vagy hajlandó arra, hogy az ütemezett feladatot a pontosan erre a célra kitalált feladatütemezővel futtasd" (kicsit behergelődött) mondatot nem vettem magamra, mert nem rám vonatkozik. :D

    Lock-okra:
    Igazából direkt előre kihangsúlyoztam, hogy elsősorban magára az ellenőrzésre kérdeztem rá, nem pedig az írási műveletekkel kapcsolatos aggályaidra, mert mint említettem vala, az még érthető is :D, de nekem úgy tűnt, hogy a lock-ok emlegetése kapcsán Te rátapadtál kőkeményen az írás-témára. De aztán utána meg simán az ellenőrzés-téma kapcsán is azt emlegetted, hogy a többiek várni fognak az erőforrásokra. Most szűkítsük le a kört simán arra, hogy kiolvasod az értéket ÉS az utsó módosítás dátumát, majd utóbbinál még egy összehasonlítást is végzel az aktuális dátummal, megnézed, amúgy mi a pálya, kéne-e frissíteni. Akkor itt még ne vegyük azt, hogy mi van, ha igen (akkor növelni kéne) - ebben az esetben ugye Te sem arra gondoltál, hogy írási művelet híján drasztikusan csökken a szerver teljesítménye nagy felhasználószám esetén?

    Egyébként az ütemezett scriptben feltételezem, nem árt ellenőrizni, hogy a júzer épp online-e, mert ha offline, akkor gondolom nem kéne növelni a mannáját, szóval akkor a böngészőből való kilépés esetén küldeni kéne egy requestet a szerver felé, hogy na cső, akkor távoztam, azt meg beírni adatbázisba, hogy most már nincs szükség buzerálásra az adott júzernél.
    Mondjuk jobb lenne ismerni jobban egy ilyen játék működését, én ilyeneket nem szoktam tolni (kinek van ilyenre ideje? :D), úgy kicsit könnyebb lenne beszélni az elméleti lehetőségekről.

    ===

    (#12995) Tele von Zsinór :
    na ja, ez az ütemezős dolog jó példa, alapvetően ez így tök jogos. De tényleg jobban kéne ismerni egy ilyen játék működési elvét, mert konkrét implementációt nem tudok, csak sejtéseim vannak róla.

    Sk8erPeter

Új hozzászólás Aktív témák