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

  • Sk8erPeter

    nagyúr

    válasz Sk8erPeter #6510 üzenetére

    "Amúgy milyen jó lenne, ha már a .htaccess fájlból is el lehetne indítani egy időmérést."
    Igazából nem is tűnik olyan nagyon hülye gondolatnak (hogy saját magamnak reagáljak). :D

    Találtam egy ilyen cikket: [Measuring Apache request processing time]
    Ez alapján plusz az Apache vonatkozó hivatalos oldala alapján (mod_headers):
    ha ezt a két Header direktívát beteszem a .htaccess fájlba:

    # %t: The time the request was received in Universal Coordinated Time since the epoch (Jan. 1, 1970) measured in microseconds. The value is preceded by t=.
    # %D: The time from when the request was received to the time the headers are sent on the wire. This is a measure of the duration of the request. The value is preceded by D=.
    Header set Ekkor_kapta_a_kerest_ms_1970_jan_1-hez_kepest: %t
    Header set Keres_feldolgozasi_ideje_us: %D

    akkor hozzáadja a HTTP-fejlécekhez ezeket is (szándékosan adtam most ilyen jó hosszú, de beszédes neveket).
    Ebben az esetben a következő fejléceket látom a Firebug Net fülén:
    Apache Header directives

    Ekkor_kapta_a_kerest_ms_1... t=1301593430575379
    Keres_feldolgozasi_ideje_... D=539031

    Tehát eszerint 539031 us = 0.539031 s ideig tartott az Apache-nak, hogy kiszolgálja a kérést.
    A t=1301593430575379 azt jelenti, hogy ennyi mikroszekundum telt el 1970. jan. 1-je óta.

    Ezek a fejlécek feldolgozhatók PHP-ból is (most itt a tömbben a fent megadott, jó hosszú nevű index-szel érhető el a kívánt érték, mindenki nevezze át ízlése szerint):

    <?php
    $headers_array = get_headers('http://'.$_SERVER['SERVER_NAME'], 1);
    // headerek kiíratása:
    echo 'HEADERS:------------<hr />';
    echo '<pre>';
    print_r($headers_array);
    echo '</pre>';

    $request_rec_time = $headers_array['Ekkor_kapta_a_kerest_ms_1970_jan_1-hez_kepest'];
    // levágjuk a "t=" részt
    $request_rec_time = str_replace( 't=', '', $request_rec_time );
    // mikroszekundumban kapjuk meg, azt átalakítjuk másodperccé (s) (1 s = 1 000 000 ms)
    $request_rec_time /= 1000000;

    // átalakítva olvasható dátummá:
    echo date('Y.m.d H:i:s', $request_rec_time).'<br />';

    ?>

    Igazából az utóbbi, a kérés ideje nem túl pontos, mivel integer értéket kapunk, így megegyezik a $request_rec_time változóval formázott fenti date() kimenete a sima date('Y.m.d H:i:s') kimenetével, aminek a második paramétere az alapértelmezett time() kimenet.

    Létezik azonban a $_SERVER['REQUEST_TIME'] változó is, amit szintén felhasználhatunk, ez szerintem kicsit pontosabb, mert talán nem csak a .htaccess fájlhoz érve kezdi számolni az időt...
    Így azt is átalakíthatjuk olvasható formátumra:

    echo date("Y.m.d. H:i:s", $_SERVER['REQUEST_TIME']).'<br />';

    De sajnos ez is csak másodperces eltéréseket fog mutatni, nálam legalábbis az "u" (mikroszekundumot jelző) formátum karakter hozzácsapása ( date("Y.m.d. H:i:s.u") ) csakis csupa nullát eredményezett.

    Ha valaki tud még jobb, még pontosabb módszereket, ne tartsa magában.
    Kösz!

    Sk8erPeter

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