Time-Server
Norbert
- php
Hi,
habe ein Script gebaut, mit dem man verschiedene Time-Server nach der Uhrzeit fragen kann.
Siehe: http://www.arachnion.ac:8080/get_time.php
Nun frage ich mich jedoch, warum bekomme ich von keinem Server, die in der RFC vorgesehene UTC, sondern immer meine Localtime.
Woher weiss der Server in Nevada, aus welcher Zeitzone die Anfrage kommt.
WAS sendet PHP bei fsockopen denn alles mit ???
PS:
Hinweise zur Systemzeit bitte an den Provider und nicht an mich senden, danke ... ;-)
Gruss und Dank
Norbert
Halihallo Norbert
Nun frage ich mich jedoch, warum bekomme ich von keinem Server, die in der RFC vorgesehene UTC, sondern immer meine Localtime.
Tust du nicht, es scheint nur so...
Woher weiss der Server in Nevada, aus welcher Zeitzone die Anfrage kommt.
Gar nicht.
WAS sendet PHP bei fsockopen denn alles mit ???
Das, was du reinschreibst, nichts anderes.
Das Ding ist (glaube ich) einfach:
Du verwendest date() um die Zeit zu formatieren? - Dieses erwartet
eine Timestamp, die UTC ist! - Jedoch wandelt date() es gleich in
die localtime um und somit erhälst du natürlich immer die localtime,
obgleich die Eingabe-Timestamp zu date() UTC ist.
http://www.php.net/gmdate sollte die
automatisch "Transformation" unterbinden und dir das Datum ausgeben,
was der Server auch tatsächlich gesendet hat.
Sieh dir mal die Timestamp-Werte verschiedener Server an. Sie sollten
sich nur um jene Sekunden erhöhen, die du brauchst um den nächsten
Server anzufragen, es wird also immer UTC zurückgegeben, egal in
welcher Zeitzone (ist ja logisch: UTC!) sich der Server befindet.
Die Transformation in *deine* Zeitzone geschieht duch date(), nicht
durch den Server.
Viele Grüsse
Philipp
Hi Philipp,
Das Ding ist (glaube ich) einfach:
glauben darf jeder ... ;-)
Hier sind die Timestamps einiger Server:
1085063118 - ntps1-1.uni-erlangen.de - GER, Erlangen
1085063118 - ntps1-0.cs.tu-berlin.de - GER, Berlin
1085063118 - swisstime.ethz.ch - SUI, Zurich
1085063118 - tock.usno.navy.mil - USA, Washington DC
1085063119 - tick.usno.navy.mil - USA, Washington DC
1085063120 - mizbeaver.udel.edu - USA, DE, Newark
1085063120 - ntps1-0.uni-erlangen.de - GER, Erlangen
1085063120 - ntps1-2.uni-erlangen.de - GER, Erlangen
1085063121 - time-A.timefreq.bldrdoc.gov - USA, CO, Boulder
1085063121 - time.nist.gov - USA, CO, Boulder
1085063121 - chime1.surfnet.nl - NL, Utrecht
1085063121 - clock.psu.edu - USA, PA, Penn
1085063122 - clock-1.cs.cmu.edu - USA, PA, Pittsburgh
1085063122 - clock-2.cs.cmu.edu - USA, PA, Pittsburgh
1085063123 - cuckoo.nevada.edu - USA, NV, Las Vegas
1085063123 - ntp-1.ece.cmu.edu - USA, PA, Pittsburgh
1085063123 - ntp-2.ece.cmu.edu - USA, PA, Pittsburgh
1085063124 - ntp0.cornell.edu - USA, NY, Ithaca
1085063124 - rolex.peachnet.edu - USA, GA, Kennesaw
1085063124 - salmon.maths.tcd.ie - IRE, Dublin
1085063124 - sundial.columbia.edu - USA, NY, New York
1085063125 - timex.peachnet.edu - USA, GA, Kennesaw
Irgendwie passt das nicht zu Deiner Theorie - leider ...
Gruss und Dank
Norbert
Halihallo Norbert
Das Ding ist (glaube ich) einfach:
glauben darf jeder ... ;-)
... nur nicht an jeden und alles, sondern in diesem Thread an
mich! :-)
Hier sind die Timestamps einiger Server:
[...]
Irgendwie passt das nicht zu Deiner Theorie - leider ...
Dann hast du meine Theorie nicht verstanden, deine Beispiele
untermauern meine Theorie sogar sehr gut.
Alle bringen dieselbe Zeit (ggf. einige Sekunden unterschied, was ja
durchaus akzeptabel ist), die UTC-Zeit! - Dein date() transformiert
sie nur in die Zeitzone deines Servers (bei GMT+1 wird zur Timestamp
also "3600 Sekunden dazugezählt" und das dann ausgegeben)...
Hast du date() schon einmal durch gmdate() ersetzt [1]? - Tu das doch
einfach, auch wenn du mir nicht glaubst, vielleicht tust du es dann
nachher :-)
[1] Oder umgekehrt, aber das wäre dann IMHO ein Bug in PHP.
Viele Grüsse
Philipp