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 2489 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 265 articles
|BIO_PSEUDO|
Commentaires récents

Publié par claude77 dans tuto

Super application, fonctionne bien
exemple sur une image

Publié par nico dans java

Petite erreur constate.
Apparemment il faut remplacer :
&mailTo = &?body=Envoyer un email avec Java
par &mailTo = < et commercial sans '<' et '>' &body=Envoyer un email avec Java

Publié par Loualfcha dans CMS

Je n'arrive pas &Atilde;&nbsp; installer le logiciel<br>Message d'erreur: DeleteFile a &Atilde;&copy;chou&Atilde;&copy;; code 5<br>Acc&Atilde;&um...

Publié par berrr dans news

Le PageRank de mon site www.specialvacances.com et toujours 0 pourquoi !

Publié par revente lmnp dans logiciel

J'aimerais avoir plus d'informations sur cette article, si quelqu'un peux m'en donnee d'avantage, je vous en remercie d'avance.