Kaip su PHP suskaičiuoti puslapio užsikrovimo laiką

Turbūt tokį ar panašų užrašą galima sutikti daug kur puslapių apačioje, ypač jei puslapio pagrindas – kokia nors paplitusu turinio valdymo sistema, kaip WordPress, Joomla ar Drupal. Tačiau programuotojas būna poreikis greitai paskaičiuoti puslapio užsikrovimo laiką be TVS, o ieškoti ir diegti kažkokius plugin’us ar klases gali kiek užtrukti. Yra paprastas greitas būdas, siūlomas php.net puslapyje.

Iš esmės, užduotis susiveda į tris paprastus dalykus: užfiksuoti skripto pradžios laiką, pabaigos laiką ir išvesti jų skirtumą į ekraną. Visų pirma, mums reikia funkcijos, kuri užfiksuos laiką ne sekundžių, o milisekundžių tikslumu. Štai jinai:

function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

Na ir tada – paprasčiausiai iškviečiame funkciją skripto pradžioje, skripto pabaigoje ir darome skirtumo “echo”. Konkrečiau:

$time_start = microtime_float();

// čia visi puslapio veiksmai, tekstai, HTML kodas ir t.t.

$time_end = microtime_float();
$time = $time_end - $time_start;
echo "Page generated in $time seconds";

Daugiau apie microtime funkciją ir jos pritaikymus galite paskaityti jau minėtame php.net puslapyje.

* * *
Norite gauti Skaitykit.lt naujienas operatyviau? Prenumeruokite RSS įrašus
Jei nežinote, kas yra RSS ir kaip juo naudotis, apie tai galima pasiskaityti šiame puslapyje.

Komentarų: 4

    Paulius:
    May 4, 2010 12:24 pm

    PHP5 Vietoj microtime_float() galime naudoti tiesiog microtime(true);

    Paulius:
    May 4, 2010 12:30 pm

    Taip pat naudingos funkcijos, leidžiančios stebėti skripto ir serverio darbą yra:
    * get_memory_usage() – naudojamos atminties kiekis einamuoju momentu
    * get_memory_peak_usage() – didžiausias sunaudotos atminties kiekis skripto vykdymo metu
    * sys_getloadavg() – grąžina masyvą su 3 elementais, rodančiais serverio apkrautumą (load). Tiesa, ši funkcija Windows kompiuteriuose ar serveriuose neveiks. Panaudojimas – php manual’e :)
    * debug_backtrace() – grąžina trace’ą

    Norint detaliau išanalizuoti, kur ir kiek užtrukta skripto vykdymas ir kiek atmienties sunaudojo, vertėtų pasinaudoti debug’eriu, pvz.: xdebug.

    Eimantas:
    May 9, 2010 10:01 am

    Nenoriu pasirodyti priekabus, tačiau tai nėra puslapio užsikrovimo laikas. Tai yra puslapio generavimo laikas. Per kiek laiko jis užsikraus priklauso nuo išorinių resursų puslapio kode bei nuo interneto linijos greičio.

    noname:
    December 31, 2010 6:32 am

    Tai jau taip, microtime, nesuskaičiuos kiekkrovėsi paveiksliukas :)

Parašykite komentarą


Powered by WordPress | Designed by: BlueHost Coupon | Compare CD Rates, Online Brokers and Press Release