zeit messen

N

nameac

Aktives Mitglied
Thread Starter
Dabei seit
20.01.2007
Beiträge
537
Reaktionspunkte
1
hallo,

wie kann ich in php die zeit messen die server und client für die kommunikation brauchen?

1. die zeit die die anfrae vom brwser zum server braucht
2. wie lange es dauert bis die daten vom server beim browser angekommen sind
3.vll noch eine möglichkeit das der browser antwortet wenn er die seite komplett aufgebaut hat, und diesen zeitstempel an den server schickt.

ein paar stichwörter wären nicht schlecht; funktionen mit denen man das realisieren kann in php und javascript.
 
Sowohl JavaScript und PHP kennen UNIX-Timestamps:
PHP: time

Bei JavaScript scheint es etwas umständlicher:
Date.UTC()

Ich denke allerdings, dass die Zeitangaben stark verrauscht und keinesfalls Millisekunden-genau sind. Die Implementierung wird umständlich (Zeitstempel in POSTs u. ä.) und Overhead verursachen. :-/

Vielleicht könntest Du im HTML-Dokument als allerletzes Element ein iframe-mitschicken, dessen Quelle innerhalb onload-Handlers einen Timestamp speichert und diesen mit einem Request als GET-Parameter an eine bestimmte URL schickt... Aber das ist nur so ins Blaue gedacht; bestimmt geht es auch besser.
 
Zuletzt bearbeitet:
Die PHP-Ausführungszeiten messe ich immer so:

Am Anfang des Dokuments
PHP:
//Benchmark 1/2
$stimer = explode( ' ', microtime() );
$stimer = $stimer[1] + $stimer[0];

und am Ende
PHP:
// Benchmark 2/2
$etimer = explode( ' ', microtime() );
$etimer = $etimer[1] + $etimer[0];
echo '<p style="margin:auto; text-align:center">';
printf( "Script timer: <b>%f</b> seconds.", ($etimer-$stimer) );
echo '</p>';
 
PHP:
// Benchmark 2/2
echo '<p style="margin:auto; text-align:center">';
printf( "Script timer: <b>%f</b> seconds.", ($etimer-$stimer) );
echo '</p>';
Klappt das auch, wenn der PHP-Output gepuffert ist?
 
Hab ich noch nicht ausprobiert, aber warum nicht? Es werden ja zu Anfang Zeiten festgelegt. Da hat jetzt bei meiner Denkensweise um Viertel vor Acht der Puffer nix mit zu tun.
 
Ich kann mich natürlich täuschen, aber ob die printf-Funktion ins RAM oder ins Netzwerk schreibt könnte einen klitzekleinen Unterschied machen... ;)
 
Ich kann mich natürlich täuschen, aber ob die printf-Funktion ins RAM oder ins Netzwerk schreibt könnte einen klitzekleinen Unterschied machen... ;)

Damit kannst Du ja nur testen, wie lange die Erzeugung des PHP-Dokuments braucht. Die Anzeige beim User ist nicht mit drin.

Auch um zwanzig vor 11 meine ich, dass das auch mit RAM oder Netzwerk keinen Unterschied macht :)
 
Vielleicht habe ich mich missverständlich ausgedrückt, oder wir reden aneinander vorbei: Ich meinte mit "Pufferung", dass der PHP-Code in ob_start() und ob_end_flush() eingebettet ist, was bei mir häufig der Fall ist). Selbstverständlich macht es einen Riesenunterschied. Bei einer 300k Bilddatei unterscheiden sich die Microtimes bei mir im LAN im Mittel um den Faktor 20, wenn man die ob_ ein- und auskommentiert. Auch wenn man die Pufferung nicht explizit anfordert, wird "Messung" noch durch die serverseitige Setzung des globalen Puffers (default 4k) und die Netzwerktopologie, an der der Server hängt, beeinflusst.
PHP:
<?php 
// ob_start( );
$filename="picture.jpg";
$filesize = filesize($filename);
$handle = fopen ($filename, "r");
$contents = fread ($handle, $filesize);
fclose ($handle);
header('Content-Type: image/jpeg', true);
header('Content-Transfer-Encoding: binary',true);
header('Content-Length: '.$filesize, true);
$start = microtime(true );
print $contents;
$stop=microtime(true);
// ob_end_flush( );
error_log( sprintf("microtime: %f", $stop-$start), 0);
?>
nameac wird um Frickeleien auf der Clientseite eh nicht herumkommen.
 
Zuletzt bearbeitet:
ja bisher ist mir auch nur eingefallen über java script, den zeitstempel auf client seite mit dem der server seite zu vergleichen. dazu müssen natürlich bisher auch die uhren beider systeme gleichgehen oder ich hole mir die zeit von anders wo weiß nicht ob es möglich ist auf ein und den selben zeitgeber zuzugreifen.

wozu ich noch nichts gefunden habe, wie machen das die profis?.

http://shareme.com/showtop/mercury-interactive-testing---.html

dies hab ich für pc gefunden aber so richtig konnte ich damit auch nicht umgehen und eine zeit messung war da auch nicht zuentdecken.

weil ohne richtige zeitmessung genügt mir ein einfacher macro recorder der eine meine seite ein paar mal aufruft.
ich messe die zeit über einen wie oben formulierten vorgang und berrechne den durchschnitt.
und bandbreite würde ich mit "trace" messen. wenn euch da noch ein paar sachen einfallen, ich bin ganz ohr, vll muss man da auch ganz andere lösungsansätze verfolgen.
 
Zurück
Oben Unten