[php] verkeerde time() aan einde script?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
om de doorlooptijd van mijn script te meten vraag ik aan het begin en aan het eind time() op, en trek die van elkaar af. Helaas klopt de uitkomst hiervan niet (het script doet er bv ca 90 seconden over en geeft dan 40 seconden als uitkomst).
om te checken laat ik ook dmv javascript de tijd bepalen, en die geeft wel het juiste resultaat.
PHP:
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
    $starttijd = time();
    print ("php start: ".date("H:i:s")."<br>");
?>
<script>
    function jsTime () {
        dateObject = new Date();
        tijd = dateObject.getTime();
        document.write ("js time: "+dateObject.getHours()+":"+dateObject.getMinutes()+":"+dateObject.getSeconds()+'<br>' );
        return (tijd);
    }
    starttijd = jsTime();
</script>

dan volgt het hoofddeel met een heleboel db-queries
en dan aan het eind
PHP:
4
5
6
7
8
9
10
11
<?
print ("<script>");
print ("    eindtijd = jsTime();");
print ("    document.write('<br>tijdsduur js: '+(eindtijd-starttijd)/1000);");
print ("</script><br>");
print ("tijdsduur php: ".(time()-$starttijd));
print ("<br>php eind: ".date("H:i:s")."<br>");
?>

het enige dat ik kan bedenken, is dat het php script al klaar is met parsen, en dus al het eind bereikt, terwijl er nog informatie uit de database moet komen.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ehm javascript draait bij de client, en die heeft dan waarschijnlijk een net iets andere tijd?

ehm, die javascript die meet enkel de tijd dat de browser nodig heeft om de pagina weer te geven toch :?

[ Voor 38% gewijzigd door Erkens op 22-04-2003 10:23 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja. ik heb m er even ingezet om te checken of het met javascript wel goed gaat.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

zelf gebruik ik altijd getmicrotime()

PHP:
1
2
3
4
5
6
7
8
9
10
11
$time_start = getmicrotime(); 

...

$duration = round(getmicrotime() - $time_start,3); 


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

[ Voor 31% gewijzigd door Erkens op 22-04-2003 10:32 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Erkens schreef op 22 april 2003 @ 10:32:
zelf gebruik ik altijd getmicrotime()

[...]
microtime() geeft niet zondermeer een getalletje terug; tijdsduur uitrekenen kan zo:
PHP:
1
2
3
4
5
6
7
8
9
$start_time = microtime();

// ...

list($a_dec, $a_sec) = explode(' ', $start_time);
list($b_dec, $b_sec) = explode(' ', microtime());
$duration = $b_sec - $a_sec + $b_dec - $a_dec;

echo 'Tijdsduur: '.sprintf('%0.3f', $duration).' seconden';


edit: al verbetert zie ik :)

[ Voor 10% gewijzigd door crisp op 22-04-2003 10:35 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

crisp schreef op 22 April 2003 @ 10:34:


edit: al verbetert zie ik :)
ik was vergeten dat getmicrotime() een "eigen" functie was :P

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
in mijn script stond eerst microtime :) toen die de verkeerde waarde gaf ben ik het met time() gaan proberen omdat ik nooit eerder microtime had gebruikt en dacht dat ik daar ergens de mist in was gegaan. ze leveren echter beide de zelfde (foute) tijdsduur...

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 22 april 2003 @ 10:42:
in mijn script stond eerst microtime :) toen die de verkeerde waarde gaf ben ik het met time() gaan proberen omdat ik nooit eerder microtime had gebruikt en dacht dat ik daar ergens de mist in was gegaan. ze leveren echter beide de zelfde (foute) tijdsduur...
Waarom zou deze tijdsduur foutief zijn?

Je maakt een request, hij begint met het maken van de html pagina(dus incl sql querys enzo), als dat allemaal klaar is verstuurd hij de pagina, dit neemt ook weer tijd in beslag, maar hij zal de tijd alleen aangeven hoelang het duurt op de server.

Teminste ik meen aan van wel ;) .

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kan het dan zo zijn dat hij zoveel mysql-queries doet dat die voor de vertraging zorgen tussen wanneer php het time() statement bereikt en het moment dat de uitkomst ook werkelijk geprint wordt?
Pagina: 1