Zend_TimeSync.xml 7.6 KB

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