Zend_TimeSync.xml 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.timesync.introduction">
  5. <title>Introduction</title>
  6. <para>
  7. <classname>Zend_TimeSync</classname> est capable de recevoir une information
  8. temporelle depuis un serveur de temps, en utilisant les protocoles <emphasis>NTP</emphasis>
  9. ou <emphasis>SNTP</emphasis>. Avec <classname>Zend_TimeSync</classname>, Zend Framework peut
  10. fonctionner sans se soucier de la configuration du temps (de la date) du serveur sur lequel
  11. il tourne.
  12. </para>
  13. <para>
  14. Pour se rendre indépendant du temps actuel sur le serveur,
  15. <classname>Zend_TimeSync</classname> fonctionne en calculant des différences entre le temps
  16. du serveur, et le temps réel actuel, en envoyant et recevant des paquets vers un serveur de
  17. gestion du temps, grâce aux protocoles NTP ou SNTP.
  18. </para>
  19. <note>
  20. <title>En tâche de fond</title>
  21. <para>
  22. <classname>Zend_TimeSync</classname> ne peut pas changer le temps sur le serveur,
  23. mais il peut en revanche retourner un objet <link
  24. linkend="zend.date.introduction">Zend_Date</link> de différence de temps, pour
  25. travailler avec.
  26. </para>
  27. </note>
  28. <sect2 id="zend.timesync.introduction.why">
  29. <title>Pourquoi <classname>Zend_TimeSync</classname> ?</title>
  30. <para>Pourquoi donc utiliser <classname>Zend_TimeSync</classname> ?</para>
  31. <para>
  32. En théorie, sur un serveur, un service (démon) tourne sur le système
  33. d'exploitation, pour s'occuper de la synchronisation précise du temps, avec un serveur
  34. distant de temps. Cependant il est possible que votre OS ne supporte pas ceci, ou que
  35. vous n'ayez pas les droits, ou la possibilité de gérer un tel service de
  36. synchronisation. <classname>Zend_TimeSync</classname> prend alors tout son sens.
  37. </para>
  38. <para>
  39. Voici quelques exemples dans lesquels <classname>Zend_TimeSync</classname> est
  40. tout à fait adapté et utile :
  41. </para>
  42. <itemizedlist mark="opencircle">
  43. <listitem>
  44. <para>
  45. <emphasis>Serveur sans service de synchronisation du
  46. temps</emphasis>
  47. </para>
  48. <para>
  49. Si votre application tourne sur un serveur qui ne possède pas de service
  50. de synchronisation du temps, alors utiliser <classname>Zend_TimeSync</classname>
  51. vous permettra de gérer le temps dans votre application.
  52. </para>
  53. </listitem>
  54. <listitem>
  55. <para><emphasis>Serveurs de base de données séparés</emphasis></para>
  56. <para>
  57. Si votre serveur de base de données est installé sur un serveur distant,
  58. et qu'il n'est pas synchronisé temporellement avec votre serveur applicatif,
  59. alors vous rencontrerez des problèmes si vous utilisez des timestamps.
  60. </para>
  61. </listitem>
  62. <listitem>
  63. <para><emphasis>Serveurs multiples</emphasis></para>
  64. <para>
  65. Si votre application fonctionne au travers de multiples serveurs
  66. applicatifs, il est possible que ceux-ci ne soient pas synchronisés au niveau du
  67. temps, et entre eux. Des problèmes vont alors apparaître lorsque des données
  68. proviennent de plusieurs serveurs différents, et sont traitées ensemble.
  69. </para>
  70. </listitem>
  71. <listitem>
  72. <para><emphasis>Processus de Batch</emphasis></para>
  73. <para>
  74. Si vous utilisez des fichiers batchs, ou des applications en ligne de
  75. commande, et que celles-ci nécessitent une synchronisation temporelle absente
  76. sur votre système.
  77. </para>
  78. </listitem>
  79. </itemizedlist>
  80. <para>
  81. Dans tous ces cas là, <classname>Zend_TimeSync</classname> est une solution
  82. parfaite lorsque vous ne pouvez installer de service sur vos serveurs.
  83. </para>
  84. </sect2>
  85. <sect2 id="zend.timesync.introduction.ntp">
  86. <title>Qu'est ce que NTP ?</title>
  87. <para>
  88. Le <code>Network Time Protocol</code> (<emphasis>NTP</emphasis>) est un protocole
  89. utilisé pour la synchronisation du temps des systèmes informatiques au travers du
  90. réseau. NTP utilise le port UDP 123 comme couche de transport. Voyez cet <ulink
  91. url="http://fr.wikipedia.org/wiki/Network_Time_Protocol"> article wikipédia</ulink> pour
  92. plus d'informations sur le protocole.
  93. </para>
  94. </sect2>
  95. <sect2 id="zend.timesync.introduction.sntp">
  96. <title>Qu'est ce que SNTP?</title>
  97. <para>
  98. Le <code>Simple Network Time Protocol</code> (<emphasis>SNTP</emphasis>) est un
  99. protocole utilisé pour la synchronisation du temps des systèmes informatiques au travers
  100. du réseau. SNTP utilise le port UDP 37 comme couche de transport. Il est très semblable
  101. à <constant>NTP</constant>, mais plus simple (comme son nom l'indique).
  102. </para>
  103. </sect2>
  104. <sect2 id="zend.timesync.introduction.problematic">
  105. <title>Problèmes courants d'utilisation</title>
  106. <para>
  107. Faites attention avec l'utilisation de <classname>Zend_TimeSync</classname>. Vous
  108. devrez garder en tête certains détails concernant la structure de la synchronisation
  109. temporelle, et du Web lui-même. Les bonnes pratiques pour éviter ces problèmes sont
  110. décrites ici. Lisez les bien avant d'utiliser
  111. <classname>Zend_TimeSync</classname>.
  112. </para>
  113. </sect2>
  114. <sect2 id="zend.timesync.introduction.decision">
  115. <title>Décider quel serveur de temps utiliser</title>
  116. <para>
  117. Décider du serveur de temps à utiliser est assez minutieux. Vous devrez prendre en
  118. considération les paramètres suivants :
  119. </para>
  120. <itemizedlist mark="opencircle">
  121. <listitem>
  122. <para>La distance</para>
  123. <para>
  124. Bien entendu la distance entre votre serveur et le serveur de temps est
  125. importante. Afin de réduire la charge réseau et d'obtenir des réponses plus
  126. rapides, veillez à utiliser un serveur de temps proche géographiquement de votre
  127. serveur applicatif.
  128. </para>
  129. </listitem>
  130. <listitem>
  131. <para>La vitesse</para>
  132. <para>
  133. La vitesse à laquelle les serveur de temps vont vous répondre est
  134. importante. Certains sont souvent saturés. Faîtes des mesures.
  135. </para>
  136. </listitem>
  137. <listitem>
  138. <para>Leur nombre</para>
  139. <para>
  140. N'utilisez pas systématiquement le même serveur de temps pour vous
  141. synchroniser. Si vous envoyez trop de requêtes vers un serveur de temps,
  142. celui-ci pourra vous bannir. Utilisez un pool de serveurs dont vous assurerez la
  143. rotation.
  144. </para>
  145. </listitem>
  146. </itemizedlist>
  147. <para>
  148. Mais où donc trouver des serveurs de temps ? Déjà, essayez votre LAN. En effet il
  149. est possible que vous disposiez d'un serveur de temps interne à votre structure. Sinon
  150. vous pouvez utiliser l'un des nombreux serveurs publics. Il sera alors intéressant
  151. d'utiliser un pool de serveurs. Un pool est un serveur vous donnant aléatoirement
  152. l'adresse d'un serveur de temps, en fonction de critères, comme la distance. C'est une
  153. solution tout à fait adaptée pour assurer une rotation des serveurs, et éviter tous les
  154. problèmes mentionnés ci-dessus.
  155. </para>
  156. <para>
  157. Voyez <ulink url="http://www.pool.ntp.org">www.pool.ntp.org</ulink> afin de
  158. récupérer le pool le plus proche de vous. Par exemple pour un serveur en France
  159. <code>0.europe.pool.ntp.org</code> pourra faire l'affaire.
  160. </para>
  161. </sect2>
  162. </sect1>