NePo
Rugpjūtis 24, 2006

Puslapio krovimo laikas

Turbūt ne kartą teko matyti puslapio apčioje užrašą “sugeneruotas per xxx sekundžių” (xxx dažniausiai neviršija poros sekundžių). Šį kartą nusprendžiau atskleisti tokio skaičiuotojo paslaptį.

Juokauju, anokia čia paslaptis tik truputis kodo ir tiek.
Pirmąją kodo dalį reikia įdėti puslapio viršuje

$laikas= microtime();
$laikas= explode(' ', $laikas);
$laikas= $laikas[1] + $laikas[0];
$pradzia= $laikas;

Komanda microtime() gražina laika tokiu formatu “msec sec”, todėl antroje eilutėje atliekame explode() t.y. atskiriame ir trečiojoje sudedame, kad gautume tikslų laiką, kurio mums reikia. Ši dalis paskaičiuoja puslapio krovimo pradžios laiką. Dabar analogišką kodą parašysim puslapio apačioje ir atėmę skirtumą tarp puslapio krovimo pradžios ir pabaigos gausim visą generavimo laiką.

$laikas= microtime();
$laikas= explode(' ', $laikas);
$laikas= $laikas[1] + $laikas[0];
$pabaiga= $laikas;
$viso= ($pabaiga - $pradzia);

Jums beliko tik gautą rezultatą išvesti į ekraną.

(Pastaba: šį skriptą aš naudojau php4, php5 yra daug protingesnis ir explode’inti bei sudėti nieko nereikia, pilnai užtenka tik paimti matavimus ir suskaičiuoti skirtumą.)
Kam toks kodas gali būti reikalingas? Na, eiliniam vartotojui tikrai neįdomu per kiek laiko sugeneruotas puslapis, tačiau užsakovui galite pasakyti, kad čia zebro kojos kreivos, o ne jūsų kodas.

Nuorodos
microtime
explode

Panašūs straipsniai


“Puslapio krovimo laikas” komentarų: 5

  1. mid

    uz lietuviskus variablu pavadinimus - per nagus ir is darbo.

  2. ZaZa

    Kalbant apie PHP, puslapio generavimo laiką, galima paspartinti įjungus “output_buffering” http://lt.php.net/manual/en/ref.outcontrol.php#ini.output-buffering ir atiduodant tinklapio dalis porcijomis, o ne “echinant” kas eilutė. Kartais tai daroma su ob_start(); bet čia jau pačiam reikes viska programuoti.

    Be to, laiko generavimą butu visai samoninga įdeti į atskira funkcija ;-)

    Šeip, iš patirties, puslapio krovimo laikas yra pakankamai kritinis dalikas, kuris turi buti kuo mažesnis. Dažna klaida, kuria padaro žmonės (įpač naujokai), bekurdami koki nors produkta dirbati su duomenų bazė: įdeda tokia “funkcija”, pažiuri kad viskas gerai (laikas yra 0.2-0.5 sekundės) ir apsiramina. Niekas iš ju neimą į galvq, koks yra duomenų kiekis bazėja ir kaip augs duomenų bazė, su kuria dirba proektas. O po metu, kai bazė padidėja kalis šimtus kartu, viskas pradėda stabdyti. O pražaščiu buna daug: tai duomenų bazės truktura yra nera optimali, tai resursus laiku neatlaisvina, tai indeksus nesurašo, tai kurėjo rankos visiškai-totaliai kreivos.

    O dar nesuprantu (off-topic), kodėl visi varo ant “zebros” ? Naudojus 1.5 metu, ir neturiu jokiu priekaištu. Gal aš ką ne taip darau? Pas mane geras pastovus rišis, jokiu ilgu ryšio nebuvimo, malonus aptarnavimas, greitas gedimu pašalinimas, visada išlaikomas pažadėtas greitis (jai tai leidžia anas galas). Be to pas visus buna gedimai. Ne, aš ne dirbu TEO .)

  3. HEADSHOT

    Manau pavyzdyje kaip tik geriau lietuviski variablu vardai. As zebra naudojausi irgi mazdaug 1.5m be jokiu problemu nesuprasdavau kaip kitiem nutruksta internetas ir panasiai bet dabar pradedu ir pats tai patirti.

  4. Rimantas

    Juokingai skamba “lietuviski variablu”. Tiek tos ir lietuvybės.
    Kad ir koks lietuvybės kompiuteriuose šalininkas būčiau, bet kintamųjų vardai tam - ne pati tinkamiausia vieta. Teko dirbit su kitos šalies kolegų “tautiniu” kodu - menkas džiaugsmas.

  5. Kesc

    Aš ir pats naudoju lietuviškus ir pakol kas suprantu savo paties kodą, o ar ne tas svarbiausia? Jei kurčiau kolegoms iš užsienio rašyčiau angliškai. Kažkaip esu matęs ir žiauresnių programavimo kultūros klaidų, kai pavyzdžiui visas išvestas html kodas būna viena didelė eilutė.

Rašyti komentarą

Jūs privalote prisijungti jeigu norite rašyti komentarą.