Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki, šiandien pastebėjau, kad mano kuriamas puslapis ne toks efektyvus, kaip prieš tai buvo. Sidebar'e yra monitorius, kuris gauna serverio informaciją (Esami žaidėjai, daugiausiai žaidėjų etc.). Susidomėjau, kaip padaryti, kad tai vyktų greičiau? Esu girdėjęs apie cache. Tai va, pasiskaičiau aš apie tą cache ir radau, kad jis skirtas tik vienam puslapiui, t.y vienam puslapio atvėrimui, o pas mane tas sidebar'as eina per visus puslapius.

 

IŠVADA: Ką patartumėt? Ar tą patį cache? :unsure:

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki, šiandien pastebėjau, kad mano kuriamas puslapis ne toks efektyvus, kaip prieš tai buvo. Sidebar'e yra monitorius, kuris gauna serverio informaciją (Esami žaidėjai, daugiausiai žaidėjų etc.). Susidomėjau, kaip padaryti, kad tai vyktų greičiau? Esu girdėjęs apie cache. Tai va, pasiskaičiau aš apie tą cache ir radau, kad jis skirtas tik vienam puslapiui, t.y vienam puslapio atvėrimui, o pas mane tas sidebar'as eina per visus puslapius.

 

IŠVADA: Ką patartumėt? Ar tą patį cache? :unsure:

 

Patarčiau tą cache naudoti ant pačio sidebaro.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Hm, kažkaip iš tavo žinutės pasirodė, kad nelabai supranti, kas yra cache (neįsižeisk) :) Tai nėra kažkoks vienas dalykas, o bendras terminas. Paprastai tariant, tokia vieta, kur pasidedi objektus laikinai, kad galėtum juos greičiau pasiekti.

 

Tavo atveju galima tarkim leisti cronjobą (jei hostingas suteikia galimybę) kas kokias 5 minutes ar pan., kuris serverio statusą įrašytų į MySQL (jei shared hostinge. Turint VPS labiau tiktų kažkas specializuoto, pvz. Memcache :)). O puslapyje jau imti tik iš MySQL duomenis. Taip nereiks kiekvienąkart jungtis prie serverio, kurio statusą imi :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Silke, ne, neįsižeidžiau, nes dar niekad nebandžiau cache. :) Sakai būtų greičiau, jei su cronjob'u imčiau serverio duomenis ir juos įrašyčiau į MySQL, o iš MYSQL traukčiau, kai reiktų? :)

Na, sakau, jei VPS turint, tai būtų optimalesnių sprendimų, bet shared'e tiktų ir MySQL. Manau tikrai būtų greičiau, vien palygink koks ping yra į localhost'ą, o koks į tą serverį, stovintį kažkur kitur :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O ne geriau butu cache atnaujinti paciam, o ne cronjobo pagalba, kadangi priklausomai nuo lankomumo, butu galima isvengti bereikalingu updatu? Minusas gal tas, kad kazkuriam useriui atiteks ta apkrova..

Na taip, jei lankomumas nėra visąlaik didelis, galima paties requesto metu atnaujinti, kai kažkiek laiko praeina :) Nors apskritai, kaip šnekėjom kitoje temoje, serverių monitoriams reikia kuo mažesnio cache laikotarpio, kadangi žaidėjai nori pamatyti dabartinį serverio statusą. Juk bus ne kas, jei rodys pilną serverį, o atėjęs žaidėjas ras tuščią :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na taip, norisi, kad būtų viskas iš karto, bet kartu norisi, kad ir puslapis greitai krautūsi. Viską darau su CodeIgniter, mačiau ten yra cache driver'iai, bet nelabai pagaunu kaip ten su jais elgtis.

 

EDIT:

 

Padariau, kaip ir Silkė sakė. Cronjob'o pagalba imu duomenis ir juos keliu į MySQL. Labai greitai veikia puslapis, jokių trugdžių nesimato. :)

Redagavo FaitasS
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na taip, norisi, kad būtų viskas iš karto, bet kartu norisi, kad ir puslapis greitai krautūsi. Viską darau su CodeIgniter, mačiau ten yra cache driver'iai, bet nelabai pagaunu kaip ten su jais elgtis.

 

Hm, o ko būtent ten nesupranti? Pakankamai paprasta viskas :) Nežinau, ar hostingas palaiko APC, jei ne, tada nebent kešavimas į failą tiktų :)

http://codeigniter.com/user_guide/libraries/caching.html

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na taip, bandžiau be APC, bet irgi ten nelabai kas. Failas išsisaugo, info susirašo, bet kaip jį nuskaityti ir parodyti kitam? :)

Na tai su get() metodu tikriausiai :) O jei reikia sukešuoti ne paprastus stringus, o kokius nors PHP masyvus ar objektus, galima apdoroti su serialize()/unserialize() (na, masyvams su primityviems tipams tiktų netgi ir json) :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nelabai supratau kas yra serialize()/unserialize() ir json, bet pasidomėsiu. :)

Na, JSON yra duomenų serializavimo formatas, kaip yra XML (HTML jau kiek kitoks) ar dar koks YAML. Tarkime PHP masyvą pavertus į string su kokiu var_dump jo juk nesupras kita aplikacija, programavimo kalba. Todėl ir kuriami tokie „tarpkalbiniai“ (:D) formatai, kaip JSON. Šiuo atveju, tarkime cache supranta tik string tipą, json ar serialize būtent ir gali padėti paversti kažką rimtesnio (objektą/masyvą) į stringą, o vėliau iškoduoti ir vėl gauti normalų objektą. Tarkime turi PHP masyvą:

array(
 'vardas' => 'Jonas',
 'pavarde' => 'Petraitis'
)

json_encode() tai pavers į kažką tokio:

{ 'vardas' : 'Jonas',
 'pavarde' : 'Petraitis' }

T.y. paprasčiausią string'ą. po json_decode($tekstas,TRUE) (TRUE tam, kad iškoduotų ne į objektą, o į masyvą), vėl gausi įprastą PHP masyvą. JSON, žinoma, galėsi išsikoduoti bet kokioje kitoje kalboje, kuri turi tam funkcijas :)

 

Tačiau JSON tepalaiko string, int, float ir boolean (na, dar sąrašai), jei ko nepamiršau. O serialize/unserialize yra grynai PHP'o dalykas, ne „tarpkalbinis“, tačiau būtent dėl to juo galima encodinti rimtesnes struktūras - iš esmės bet kokį tipą, kokį PHP turi (išskyrus resource turbūt) :)

 

tl;dr: sukiši objektus į string, po to iš to string atgauni vėl gražius objektus :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

aš siūlyčiau tą monitorių susikurt naujam php dokumente, ir jį iframe'int su paprasčiausiu html.

iframo pavyzdys:

<iframe allowTransparency='true' frameborder='0' style='border:0px;width:30px; height:12px; background-color:transparent;' scrolling='no' marginheight='0px' src='includes/busena.php?id=8'></iframe>

Pasistudijuok ir perprasi tą kodą. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tokiai informacijai, kaip Esami žaidėjai, daugiausiai žaidėjų etc. nereikia cronjobų, gali kešuoti visam laikui, o atnaujinti tik tada, kai ta informacija atsinaujina (kas nors užsiregina, prisijungia ar pan.). Tai tada ta informacija visada bus tiksli ir nereikės daryti bereikalingų užklausų kas kelias minutes.

Redagavo Tom
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tokiai informacijai, kaip Esami žaidėjai, daugiausiai žaidėjų etc. nereikia cronjobų, gali kešuoti visam laikui, o atnaujinti tik tada, kai ta informacija atsinaujina (kas nors užsiregina, prisijungia ar pan.). Tai tada ta informacija visada bus tiksli ir nereikės daryti bereikalingų užklausų kas kelias minutes.

 

Ir kokiu budu siulai nustatyti, kas nutolusiame serveryje prisiregino, prisijunge ir pan..? Gaunasi tas pats..

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ir kokiu budu siulai nustatyti, kas nutolusiame serveryje prisiregino, prisijunge ir pan..? Gaunasi tas pats..

Jei žmogus prisiregistravo, tik tada reik atnaujinti tą esamų žaidėjų skaičių ir dėti į kešuojamą failą, memcache, ar dar ką. Ir neatnaujinti tol kol vėl kas nors neprisiregistruos.

Redagavo Tom
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jei žmogus prisiregistravo, tik tada reik atnaujinti tą esamų žaidėjų skaičių ir dėti į kešuojamą failą, memcache, ar dar ką. Ir neatnaujinti tol kol vėl kas nors neprisiregistruos.

 

Lyg to buciau klauses... Dievaz, skaitykit atidziau, jei jau atsakinejat.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...