Publié le 16/06/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Mettre a jour la date via un serveur NTP

Lorsque l'heure du serveur doit ętre exacte, la date est synchronisée régulièrement en interrogeant les serveurs de temps. Avec le langage PHP, la fonction fsockopen établit une communication NTP pour récupérer le précieux TimeStamp.

Serveur NTP (Network Time Protocol)

NTP est le protocole utilisé pour communiquer avec ces serveurs en ligne, eux-mêmes reliés à des horloges atomiques. Le format d'échange est commun au monde entier : UTC (Coordinated Universal Time).

Exemples de serveurs NTP publics:
- ntp.laas.fr (LAAS/CNRS, Toulouse),
- ntp.u-psud.fr (CRI, Université Paris Sud),
- ntp2.emn.fr (Ecole des Mines, Nantes).

La communication passe par le port 123 ou le port 37.

Script PHP d'interrogation d'un serveur de temps

A l'aide d'une requête PHP, le script ci-dessous prend en charge les fonctions suivantes:
- interroger le serveur avec les sockets sur le port 37,
- convertir la réponse en timestamp,
- Afficher l'heure et la date au format francais.

<?php
define('NTP_SERVER',"ntp2.emn.fr");
 
/**
 * Interroger le serveur ntp avec une connection socket sur le port 37
 * @return timestamp
 */
function getTimeStamp() {
    $fp = fsockopen(NTP_SERVER, 37);
    if (!$fp) {
        return 0;
    } else {
        fputs($fp,"n");
        $buf = fread($fp,49);
        fclose($fp); # close the connection
        $time = bin2hex ($buf);
        $time = abs (HexDec('7fffffff') - HexDec($time) - HexDec('7fffffff')) ;
        return $time - 2208988800;
    }
}
 
$timestamp=getTimeStamp();
/**
 * Formater la date au format UTC et francais
 */
echo 'Reponse du serveur '.NTP_SERVER.': '.$timestamp.'<br>';
echo 'Date UTC: '.date("Y-m-d (D) H:i:s",$timestamp - date("Z",$timestamp)).'<br>';
echo 'Date francaise: le '.date("d/m/Y",$timestamp).' il est exactement '.date("H:i:s",$timestamp).'<br>';
 
?>

D'une manière générale, le développeur utilise la fonction microtime() pour connaitre l'heure à partir du serveur sur lequel s’exécute le script. Si l'on veut justement synchroniser l'heure de son serveur ou utiliser des fonctions de cryptage, une communication NTP peut être intéressante.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - script
Mise a jour
16/06/2010
Visualisation
vu 2410 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 263 articles
|BIO_PSEUDO|
Commentaires récents

Publié par fredouille dans java

Il ne faut pas oublier de mettre aussi System.setErr(printStream); pour ne pas oublier les printStackTrace() declenches par le catch

Publié par mohamed dans php5

code comment publier tous les ficher en php5 et html5

Publié par roundge dans php5

Bien ! Merci pour cette petite classe en php bien pratique !
J'avais 2000 photos libres de droits à télécharger sur un site, dans un dossier ou les fichiers ne sont pas list&e...

Publié par agence cms open source dans tuto

Vu la multitude des outils de gestion de contenu Open Source, sélectionner l'un d'entre eux exige de réaliser une comparaison fine. Les lecteurs défendent les raisons de leurs cho...

Publié par Fobec dans news

Votre message a ete deplace sur le forum, ce sera plus facile pour en discuter.
http://www.fobec.com/forum/correspondance-entre-adresse-ipv4-adresse-ipv6-t1146.html