microtime() liefert die falsche Zeit

BobDerMeister

Erfahrenes Mitglied
ich habe ein phpcli Script welches Daten sammelt und in eine MySQL DB einträgt.
PHP:
...
list($usec, $sec) = explode(" ", microtime());
$time = (float)$usec + (float)$sec;
...
$sql = 'INSERT INTO '.$tbl_zvei_hist.' SET ..., time="'.$time.'", test_time=NOW()';
$db->query($sql);
...
am Anfang ist auch noch alles bestens, wenn das Script allerdings ein paar Stunden gelaufen ist wird die Zeit die microtime() liefert ungenauer. Die Zeit die MySQL mittels NOW() in die DB schriebt stimmt.
Hat jemand ne Ahnung woran das liegt oder wie man das umgehen kann?
 
Was passiert denn alles zwischen dem Aufruf von [phpf]microtime[/phpf] und dem Eintrag in die Datenbank? Was meinst du mit "ungenauer"? Im Millisekundenbereich, oder im Minutenbereich? Woher weißt du, dass die von NOW() ermittelte Zeit stimmt? Sorgt deine Datenbankklasse für eine Verzögerung des Queries? Kommt die Datenbank vielleicht nicht mehr hinterher und lässt dein Query entsprechend warten?
 
Die Ungenauigkeit ist im Sekundenbereich und summiert sich irgendwann auch zu Minuten.
Das die NOW() Zeit stimmt weiss ich weil der Server von dem ich Daten bekommen auch ein log hat in dem eben genau die Zeit steht.
die DB Klasse ist PEAR : DB - vielleicht sollte ich es mal ohne probieren.
zwischen microtime() und dem DB query wird überprüft was fürn Telegramm es ist, ob es geloggt werden muss und in welche Tabelle(n) der Eintrag kommt. Nach dem query wird noch $time und ein paar Infos zum Telegramm ausgegeben - wobei $time später ist als die aktuelle Systemzeit.
 
Zurück