| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.timesync.introduction">
- <title>Introduction</title>
- <para>
- <classname>Zend_TimeSync</classname> est capable de recevoir une information
- temporelle depuis un serveur de temps, en utilisant les protocoles <emphasis>NTP</emphasis>
- ou <emphasis>SNTP</emphasis>. Avec <classname>Zend_TimeSync</classname>, Zend Framework peut
- fonctionner sans se soucier de la configuration du temps (de la date) du serveur sur lequel
- il tourne.
- </para>
- <para>
- Pour se rendre indépendant du temps actuel sur le serveur,
- <classname>Zend_TimeSync</classname> fonctionne en calculant des différences entre le temps
- du serveur, et le temps réel actuel, en envoyant et recevant des paquets vers un serveur de
- gestion du temps, grâce aux protocoles NTP ou SNTP.
- </para>
- <note>
- <title>En tâche de fond</title>
- <para>
- <classname>Zend_TimeSync</classname> ne peut pas changer le temps sur le serveur,
- mais il peut en revanche retourner un objet <link
- linkend="zend.date.introduction">Zend_Date</link> de différence de temps, pour
- travailler avec.
- </para>
- </note>
- <sect2 id="zend.timesync.introduction.why">
- <title>Pourquoi <classname>Zend_TimeSync</classname> ?</title>
- <para>Pourquoi donc utiliser <classname>Zend_TimeSync</classname> ?</para>
- <para>
- En théorie, sur un serveur, un service (démon) tourne sur le système
- d'exploitation, pour s'occuper de la synchronisation précise du temps, avec un serveur
- distant de temps. Cependant il est possible que votre OS ne supporte pas ceci, ou que
- vous n'ayez pas les droits, ou la possibilité de gérer un tel service de
- synchronisation. <classname>Zend_TimeSync</classname> prend alors tout son sens.
- </para>
- <para>
- Voici quelques exemples dans lesquels <classname>Zend_TimeSync</classname> est
- tout à fait adapté et utile :
- </para>
- <itemizedlist mark="opencircle">
- <listitem>
- <para>
- <emphasis>Serveur sans service de synchronisation du
- temps</emphasis>
- </para>
- <para>
- Si votre application tourne sur un serveur qui ne possède pas de service
- de synchronisation du temps, alors utiliser <classname>Zend_TimeSync</classname>
- vous permettra de gérer le temps dans votre application.
- </para>
- </listitem>
- <listitem>
- <para><emphasis>Serveurs de base de données séparés</emphasis></para>
- <para>
- Si votre serveur de base de données est installé sur un serveur distant,
- et qu'il n'est pas synchronisé temporellement avec votre serveur applicatif,
- alors vous rencontrerez des problèmes si vous utilisez des timestamps.
- </para>
- </listitem>
- <listitem>
- <para><emphasis>Serveurs multiples</emphasis></para>
- <para>
- Si votre application fonctionne au travers de multiples serveurs
- applicatifs, il est possible que ceux-ci ne soient pas synchronisés au niveau du
- temps, et entre eux. Des problèmes vont alors apparaître lorsque des données
- proviennent de plusieurs serveurs différents, et sont traitées ensemble.
- </para>
- </listitem>
- <listitem>
- <para><emphasis>Processus de Batch</emphasis></para>
- <para>
- Si vous utilisez des fichiers batchs, ou des applications en ligne de
- commande, et que celles-ci nécessitent une synchronisation temporelle absente
- sur votre système.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Dans tous ces cas là, <classname>Zend_TimeSync</classname> est une solution
- parfaite lorsque vous ne pouvez installer de service sur vos serveurs.
- </para>
- </sect2>
- <sect2 id="zend.timesync.introduction.ntp">
- <title>Qu'est ce que NTP ?</title>
- <para>
- Le <code>Network Time Protocol</code> (<emphasis>NTP</emphasis>) est un protocole
- utilisé pour la synchronisation du temps des systèmes informatiques au travers du
- réseau. NTP utilise le port UDP 123 comme couche de transport. Voyez cet <ulink
- url="http://fr.wikipedia.org/wiki/Network_Time_Protocol"> article wikipédia</ulink> pour
- plus d'informations sur le protocole.
- </para>
- </sect2>
- <sect2 id="zend.timesync.introduction.sntp">
- <title>Qu'est ce que SNTP?</title>
- <para>
- Le <code>Simple Network Time Protocol</code> (<emphasis>SNTP</emphasis>) est un
- protocole utilisé pour la synchronisation du temps des systèmes informatiques au travers
- du réseau. SNTP utilise le port UDP 37 comme couche de transport. Il est très semblable
- à <constant>NTP</constant>, mais plus simple (comme son nom l'indique).
- </para>
- </sect2>
- <sect2 id="zend.timesync.introduction.problematic">
- <title>Problèmes courants d'utilisation</title>
- <para>
- Faites attention avec l'utilisation de <classname>Zend_TimeSync</classname>. Vous
- devrez garder en tête certains détails concernant la structure de la synchronisation
- temporelle, et du Web lui-même. Les bonnes pratiques pour éviter ces problèmes sont
- décrites ici. Lisez les bien avant d'utiliser
- <classname>Zend_TimeSync</classname>.
- </para>
- </sect2>
- <sect2 id="zend.timesync.introduction.decision">
- <title>Décider quel serveur de temps utiliser</title>
- <para>
- Décider du serveur de temps à utiliser est assez minutieux. Vous devrez prendre en
- considération les paramètres suivants :
- </para>
- <itemizedlist mark="opencircle">
- <listitem>
- <para>La distance</para>
- <para>
- Bien entendu la distance entre votre serveur et le serveur de temps est
- importante. Afin de réduire la charge réseau et d'obtenir des réponses plus
- rapides, veillez à utiliser un serveur de temps proche géographiquement de votre
- serveur applicatif.
- </para>
- </listitem>
- <listitem>
- <para>La vitesse</para>
- <para>
- La vitesse à laquelle les serveur de temps vont vous répondre est
- importante. Certains sont souvent saturés. Faîtes des mesures.
- </para>
- </listitem>
- <listitem>
- <para>Leur nombre</para>
- <para>
- N'utilisez pas systématiquement le même serveur de temps pour vous
- synchroniser. Si vous envoyez trop de requêtes vers un serveur de temps,
- celui-ci pourra vous bannir. Utilisez un pool de serveurs dont vous assurerez la
- rotation.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Mais où donc trouver des serveurs de temps ? Déjà, essayez votre LAN. En effet il
- est possible que vous disposiez d'un serveur de temps interne à votre structure. Sinon
- vous pouvez utiliser l'un des nombreux serveurs publics. Il sera alors intéressant
- d'utiliser un pool de serveurs. Un pool est un serveur vous donnant aléatoirement
- l'adresse d'un serveur de temps, en fonction de critères, comme la distance. C'est une
- solution tout à fait adaptée pour assurer une rotation des serveurs, et éviter tous les
- problèmes mentionnés ci-dessus.
- </para>
- <para>
- Voyez <ulink url="http://www.pool.ntp.org">www.pool.ntp.org</ulink> afin de
- récupérer le pool le plus proche de vous. Par exemple pour un serveur en France
- <code>0.europe.pool.ntp.org</code> pourra faire l'affaire.
- </para>
- </sect2>
- </sect1>
|