# Verstrichene Zeit in Millisekunden



## dwex (12. Juni 2006)

Hallo Leute,

ich hätte wirklich die Suche bemüht aber ich bin bisher nicht draufgekommen wie ich mein Problem lösen könnte.

Ich möchte mir gerade eine "Serverüberwachung" bauen.
Da ich ein paar Server im Netz habe möchte ich diese gerne auf einigen Ports überwachen.
Das mache ich mit fsockopen() das funktioniert auch.
Jetzt möchte ich jedoch die verstrichene Zeit in Millisekunden (ist das die Abkürzung ms? - wenn nicht dann eben in ms) angezeigt bekommen wie lange diese Abfrage gedauert hat.

Mit microtime() komme ich nicht weiter, da der mir eine Abfrage von der ich weiß das Sie mindestens 50 ms braucht (anderes Programm!) jetzt plötzlich mit nur 0.87877 ausgibt.
Das Programm und mein Script laufen auf dem selben Server - also müsste hier auch zumindest ein annähernd gleicher Wert rauskommen.

Was mache ich falsch?

Vielen Dank für euere Hilfe im Voraus!


----------



## Gumbo (12. Juni 2006)

Hast du dir die microtime()-Funktion schon einmal genauer angeschaut?


----------



## dwex (12. Juni 2006)

Gumbo hat gesagt.:
			
		

> Hast du dir die microtime()-Funktion schon einmal genauer angeschaut?


Ja Gumbo eigentlich schon - aber was meinst du?
App. ich habe PHP 4!


----------



## Gumbo (12. Juni 2006)

Der zurückgegebene Wert entspricht dem Format „_<Millisekunden>_ _<Sekunden>_“.


----------



## dwex (12. Juni 2006)

Gumbo hat gesagt.:
			
		

> Der zurückgegebene Wert entspricht dem Format „_<Millisekunden>_ _<Sekunden>_“.


Ja das ist mir schon klar - ich glaube wir reden aneinander vorbei.
Ein Beispiel:

```
<?php
$start = microtime();
$machwas = irgendwelchebefehle();
$ende = microtime();
?>
```
So jetzt hat $start einen Wert z.B. 0.9000 1234567890 und $ende einen Wert z.B. 0.9100 123456789 demnach wäre dann jetzt also die Zeit von 0.01 Millisekunden vergangen oder?
Wenn ich eine fsockopen()-Abfrage mache von der ich weis, dass diese 50 ms benötigt und dann nur 0.87877 rauskommt dann passt doch was nicht oder?
Ausserdem habe ich mir die microtime()-Funktion nochmals angeschaut und da steht was von Microsekunden - ist das evtl. nicht gleich Millisekunden?


----------



## Gumbo (12. Juni 2006)

Der Rückgabewert hat einfach den falschen Typ und das falsche Format. Probier mal die microtime_float()-Funktion wie auf der Referenzseite der microtime()-Funktion beschrieben.


----------



## dwex (12. Juni 2006)

Auch das funktioniert nicht - hier bekomme ich teilweise "Mond"-Zahlen.

Ich habe es jetzt anders gelöst:

```
<?php

$start = uniqueTimeStamp();

$machwas = irgendwelchebefehle(); 

$ende = uniqueTimeStamp();

$differenz = $ende-$start;
$differenz = $differenz/10; // warum auch immer
$differenz = (int)$differenz;

echo "Die Ausführung dauerte $differenz ms";

function uniqueTimeStamp() {
  $milliseconds = microtime();
  $timestring = explode(" ", $milliseconds);
  $sg = $timestring[1];
  $mlsg = substr($timestring[0], 2, 4);
  $timestamp = $sg.$mlsg;
  return $timestamp; 
}

?>
```
Jetzt bekomme ich eine Zahl ausgegeben welche immer im Bereich von 45-55 ms liegt - also es müsste passen.
Was sagst du dazu Gumbo?


----------



## Sven Mintel (12. Juni 2006)

Mmmh...das Millisekunden nicht dasselbe sind wie Mikrosekunden, ist dir aber schon klar


----------



## dwex (12. Juni 2006)

Sven Mintel hat gesagt.:
			
		

> Mmmh...das Millisekunden nicht dasselbe sind wie Mikrosekunden, ist dir aber schon klar


Ich denke das mir das immer klarer wird (siehe auch meine Frage dazu weiter oben).
Aber das sind doch jetzt Millisekunden oder nicht?
Wenn nein - wie mache ich es dann?


----------



## Sven Mintel (12. Juni 2006)

Es scheinen jetzt die Millisekunden zu sein..ich hatte mir deine letzte Funktion nicht genauer angesehen :-(


----------

