• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Serverzeit mit PHP korrigieren

Rotkäppchen

Mitglied
Hallo,

ist es irgendwie möglich, die Serverzeit mit PHP zu korrigieren? Ich nutze die Funktion date() um mir Datum/Uhrzeit anzeigen zu lassen. Leider ist die Uhr 7 Stunden nach hinten, ich müsste sie also vorstellen.

Kann man irgendwie die Serverzeit für dein Skript per PHP umstellen oder so?

LG, XXX
 
mit exec kann man einen befehl absetzen, dazu (datum und uhrzeit) brauchst du aber root rechte unter linux.

ansonsten datum und uhrzeit errechnen.
PHP: date - Manual

zusammen mit
PHP: mktime - Manual

ps.
ich würde zu time() einfach die differenz an sekunden addieren und daraus ein datum erstellen
 
ich habe da auch noch was für dich:
wie wäre es mit einer atom-uhr abfrage ?
PHP:
function get_atom_time($atomurl='http://www.uni-leipzig.de/cgi-bin/date/index.htm')
{
    if(!$file = @file ($atomurl)) return false;

    $fcontents = $file[2];
    $arr = split("[ ]+",$fcontents);
    $mo = $arr[1]; // monat
    $month_array = array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
    $mo = (array_search($mo,$month_array))+1;
    $d = $arr[2];// tag
    $t = $arr[3]; // zeit mit sek.
    $y = $arr[5]; // jahr
    $time_arr = explode(":",$t);
    $h = $time_arr[0]; // stunde
    $m = $time_arr[1]; // minute
    $s = $time_arr[2]; // sekunde
    // return mktime($h,$m,$s,$mo,$d,$y); // timestamp unix
    return $d.".".$mo.".".$y." ".$h.":".$m;
}

$zeit = get_atom_time();
echo $zeit;
 
Zuletzt bearbeitet von einem Moderator:
ich würde eher dazu tendieren, die serverzeit ab zu fragen ;)

es lässt sich aber sicher auch eine differenz zwischen der atomzeit (von extern) und der serverzeit errechnen, dann brauchst du nicht immer den langsamen request ausführen, sondern nur ab und zu mal ;)
 
Wie man NTP oder das richtig einfache SNTP implementiert, sollte man sich wirklich mal in Zend_Timesync ansehen. Das ist leicht verständlich.
 
Das Problem hatte ich auch kürzlich, warscheinlich ist die Server-Zeitzone falsch. Du kannst die Zeitzone irgendwo in der Konfiguration (php.ini, httpd.conf) einstellen oder im Script mit
PHP:
  $timezone = 'Europe/Berlin';
  date_default_timezone_set($timezone);
Eine Liste der Werte für $timezone gibts in der Doku auf php.net
 
Wie man NTP oder das richtig einfache SNTP implementiert, sollte man sich wirklich mal in Zend_Timesync ansehen. Das ist leicht verständlich.
im wesentlichen gebe ich dir da recht, nur haben 99% der hoster zend eben nicht oder nur teile implementiert. zend ist eine endwickler umgebung und nicht etwas, dass jeder hoster mit installiert.
 
Das Problem hatte ich auch kürzlich, warscheinlich ist die Server-Zeitzone falsch. Du kannst die Zeitzone irgendwo in der Konfiguration (php.ini, httpd.conf) einstellen oder im Script mit
PHP:
  $timezone = 'Europe/Berlin';
  date_default_timezone_set($timezone);
Eine Liste der Werte für $timezone gibts in der Doku auf php.net

Danke, genau das wars! Genau das hatte ich schon ausprobiert, offenbar hab ich eine nicht existierende Timezone gewählt.

Vielen Dank dir und euch allen!

LG, XXX
 
sysop, sorry aber du hast keine Ahnung.

Erstmal meinte ich nicht, dass er es benutzen soll, sondern war eine Empfehlung für eine Referenzimplementierung von der ich behaupten kann sie ist sehr gut.

Ich benutze Zend Framework und CakePHP ständig und es hatte noch nie ein Hoster "installiert" und genau deshalb hab ich's immer hoch geladen.
 
sysop, sorry aber du hast keine Ahnung.

Erstmal meinte ich nicht, dass er es benutzen soll, sondern war eine Empfehlung für eine Referenzimplementierung von der ich behaupten kann sie ist sehr gut.
bei aller liebe, deinen ton finde ich zum kotzen.

die frage war nach einem code, der sein problem behebt, statt dessen bietest du eine empfehlung, was man alles mit dem datum machen kann und verweist auf ntp und sntp wie es bei zend implementiert wird.
PHP:
$server = new Zend_TimeSync('0.pool.ntp.org');
ist da natürlich enorm hilfreich.

ach ja,
ich habe diverse zend module vorinstalliert, du nicht?
liegt vielleicht am hoster.
 
Zurück
Oben