PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Page load time


Scream
2007-11-09, 18:31:53
Ich habe diesen Code hier verwendet:

<?php
$time = microtime();
$time = explode(" ", $time);
$time = $time[1] + $time[0];
$start = $time;

$time = microtime();
$time = explode(" ", $time);
$time = $time[1] + $time[0];
$finish = $time;
$totaltime = ($finish - $start);
printf ("This page took %f seconds to load.", $totaltime);
?>

Es kommt immer ein ganz komisch Wert heraus, welcher auch negativ ist.
An was könnte das liegen?

Der erste Teil steht in meiner index.php ganz oben, nach ob_start(), den zweiten Teil hab ich im Footer stehen, welchen ich include. Wenn ich den zweiten Teil in die index.php schreibe kommt aber dasselbe wirre zeugs heraus.....

Sephiroth
2007-11-09, 18:35:36
sprintf (http://de.php.net/manual/de/function.sprintf.php)

Schau etwas genauer hin, für den Unterschied zw. printf (http://de.php.net/manual/de/function.printf.php) und sprintf

Gast
2007-11-09, 18:54:42
Wenn du PHP 5 zur Verfügung hast, könntest du es auch objekt-orientert lösen:

<?php
class Timebench
{
private $starttime;
private $stoptime;
private $resulttime;

public function start()
{
$this->starttime = microtime(true);
}

public function stop()
{
$this->stoptime = microtime(true);
}

public function result()
{
$this->resulttime = $this->stoptime-$this->starttime;
return $this->resulttime;
}
}


// benutzen:

$TimeBench = new TimeBench;
$TimeBench->start();

// Code

$TimeBench->stop();
echo "pageload:".$TimeBench->result()." seconds.";
?>

(keine Antwort auf deine Frage, only fyi)

Scream
2007-11-09, 20:10:29
@ Gast
danke für den tipp, sehr elegant gelöst !
wie kann ich z.b. auf drei stellen hinter dem komma runden lassen bzw. dass nur 3 stellen hinter dem komma angezeigt werden


@Sephiroth
ok besser, aber bringt trotzdem noch komische werte...

Kinman
2007-11-09, 20:39:40
Mit number_format() (http://at.php.net/number_format)

mfg Kinman

creave
2007-11-09, 21:05:14
Siehe Kinman - ich lasse das Ergebnis natürlich auch nicht so stehen sondern verarbeite es mit

echo number_format($TimeBench->result(),4)." sec.";

Habe damals darauf verzichtet, die Formatierung direkt in die Timebenchklasse zu integrieren, sondern habs die aufrufende Stelle wie gezeigt machen lassen. Allerdings könnte man der result()-Methode ja die gewünschten Nachkommastellen auch schön als Parameter übergeben:


public function result($decimal)
{
$this->resulttime = $this->stoptime-$this->starttime;
return number_format($this->resulttime(), $decimal);
}

Scream
2007-11-13, 15:24:01
super, danke!