[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_TimeSync.xml
blob98a932f1b28a7e43afd570287bd641215fe51bb5
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 20807 -->
4 <sect1 id="zend.timesync.introduction">
6     <title>導入</title>
8     <para>
9         <classname>Zend_TimeSync</classname> は、インターネット時刻
10         あるいはネットワーク時刻をタイムサーバから取得するものです。
11         プロトコルとして <emphasis>NTP</emphasis>
12         あるいは <emphasis>SNTP</emphasis> を使用します。
13         <classname>Zend_TimeSync</classname> を使用すれば、
14         Zend Framework が稼動しているサーバの時刻設定を気にせずに動作させられるようになります。
15     </para>
17     <para>
18         サーバの実際の時刻とは独立した立場でいるために、
19         <classname>Zend_TimeSync</classname> は内部的に
20         NTP や SNTP 経由の実際の時刻とサーバの時刻との差を考慮して動作します。
21     </para>
23     <note>
25         <title>背景</title>
27         <para>
28             <classname>Zend_TimeSync</classname> はサーバの時刻を変更することはできません。
29             しかし、実際の時刻とサーバの時刻との差を表す
30             <link linkend="zend.date.introduction">Zend_Date</link> のインスタンスを返します。
31         </para>
33     </note>
35     <sect2 id="zend.timesync.introduction.why">
37         <title>なぜ Zend_TimeSync ?</title>
39         <para>
40             いったいなぜ <classname>Zend_TimeSync</classname> を使うのでしょう?
41         </para>
43         <para>
44             複数のサーバで運用されている環境では、通常はタイムサーバを用いて
45             各サーバの時刻を同期させていることでしょう。
46             そのようなごく普通の環境なら、必ずしも
47             <classname>Zend_TimeSync</classname> を使う必要はありません。
48             しかし、タイムサーバを使用できない環境であったり
49             そのようなサービスを実行する権限がなかったりする場合などには便利です。
50         </para>
52         <para>
53             <classname>Zend_TimeSync</classname> の使用に適した例をいくつかあげてみます。
54         </para>
56         <itemizedlist mark='opencircle'>
57             <listitem>
58                 <para>
59                     <emphasis>タイムサービスのないサーバ</emphasis>
60                 </para>
61                 <para>
62                     アプリケーションを動作させているサーバ上でタイムサービスが稼動していない場合は、
63                     アプリケーション内で <classname>Zend_TimeSync</classname> を実装するとよいでしょう。
64                 </para>
65             </listitem>
66             <listitem>
67                 <para>
68                     <emphasis>独立したデータベースサーバ</emphasis>
69                 </para>
70                 <para>
71                     データベースが別のサーバ上で動作しており、
72                     そのサーバとアプリケーションサーバが
73                     <emphasis>NTP</emphasis> や <emphasis>SNTP</emphasis>
74                     で接続されていない場合、
75                     データベースにタイムスタンプを格納しようとすると問題が発生する可能性があります。
76                 </para>
77             </listitem>
78             <listitem>
79                 <para>
80                     <emphasis>複数サーバ環境</emphasis>
81                 </para>
82                 <para>
83                     アプリケーションが複数サーバ環境で動作しており、
84                     サーバ間の時刻が同期していない場合、
85                     あるサーバで実行したアプリケーションと
86                     別のサーバで実行したアプリケーションの間で問題が発生する可能性があります。
87                 </para>
88             </listitem>
89             <listitem>
90                 <para>
91                     <emphasis>バッチ処理</emphasis>
92                 </para>
93                 <para>
94                     バッチファイルやコマンドラインアプリケーションで
95                     タイムサービスを使用したい場合、<classname>Zend_TimeSync</classname> が使えるでしょう。
96                 </para>
97             </listitem>
98         </itemizedlist>
100         <para>
101             これらのすべての場合について <classname>Zend_TimeSync</classname> は最適なソリューションであり、
102             サーバ上で何らかのサービスを実行することができない場合にも使用できます。
103         </para>
105     </sect2>
107     <sect2 id="zend.timesync.introduction.ntp">
109         <title>NTP とは?</title>
111         <para>
112             Network Time Protocol (<emphasis>NTP</emphasis>)
113             は、ネットワーク上のパケット交換によってコンピュータシステムの時刻を同期させるプロトコルです。
114             NTP は UDP ポート 123 を使用します。このプロトコルについての詳細は
115             <ulink url="http://en.wikipedia.org/wiki/Network_Time_Protocol">wikipedia の記事</ulink>
116             (<ulink url="http://ja.wikipedia.org/wiki/Network_Time_Protocol">日本語</ulink>)
117             を参照ください。
118         </para>
120     </sect2>
122     <sect2 id="zend.timesync.introduction.sntp">
124         <title>SNTP とは?</title>
126         <para>
127             Simple Network Time Protocol (<emphasis>SNTP</emphasis>)
128             は、ネットワーク上のパケット交換によってコンピュータシステムの時刻を同期させるプロトコルです。
129             SNTP は UDP ポート 37 を使用します。<code>NTP</code>
130             プロトコルに似ていますが、よりシンプルです。
131         </para>
133     </sect2>
135     <sect2 id="zend.timesync.introduction.problematic">
137         <title>問題のある使用法</title>
139         <para>
140             <classname>Zend_TimeSync</classname> を使用する際は、
141             時刻同期の仕組みやウェブ自体の仕組みを考慮するようにしましょう。
142             問題を回避する方法についてここで説明するので、
143             <classname>Zend_TimeSync</classname>
144             を使う前に熟読しておきましょう。
145         </para>
147     </sect2>
149     <sect2 id="zend.timesync.introduction.decision">
151         <title>どのサーバを使用するか</title>
153         <para>
154             どのタイムサーバを使用するかは注意して決めなければいけません。
155             これには、次のような理由があります。
156         </para>
158         <itemizedlist mark='opencircle'>
159             <listitem>
160                 <para>
161                     距離
162                 </para>
163                 <para>
164                     アプリケーションが稼動しているサーバと
165                     使用するタイムサーバの距離です。
166                     ヨーロッパにあるサーバで動作させているのにタヒチのタイムサーバを使用するなんて意味がありません。
167                     常に近場のサーバを選択するようにしましょう。
168                     これにより、リクエストの時間とネットワーク負荷を軽減させることができます。
169                 </para>
170             </listitem>
171             <listitem>
172                 <para>
173                     速度
174                 </para>
175                 <para>
176                     リクエストが処理されるまでの所要時間も重要です。
177                     いくつかのサーバを試し、いちばんよい結果を得られるサーバを見つけましょう。
178                     到達できない場所にあるサーバにリクエストを送ったりしたら、
179                     無駄に時間をロスしてしまうことになります。
180                 </para>
181             </listitem>
182             <listitem>
183                 <para>
184                     負荷分散
185                 </para>
186                 <para>
187                     同じサーバを使い続けないようにしましょう。
188                     あまり頻繁に使用し続けると、タイムサーバからリクエストを遮断されてしまうことがあります。
189                     ひとつのアプリケーションでタイムサーバを頻繁に使用するのなら、
190                     ひとつのタイムサーバだけを使うのではなく
191                     後で説明するような (プールを使用する) 方法を使用しましょう。
192                 </para>
193             </listitem>
194         </itemizedlist>
196         <para>
197             どうやってタイムサーバを見つけたらいいのでしょう?
198             一般には、どのタイムサーバでも使用できます。
199             LAN 内にあるものであってもかまいませんし、
200             公開されているタイムサーバを使用してもかまいません。
201             公開されているタイムサーバを使用する場合は、サーバプールを使用しましょう。
202             サーバプールは、公開されているタイムサーバのアドレスをまとめたもので、
203             そこにリクエストを送るとプール内のアドレスをランダムに取得できます。
204             これを使用すれば、リクエストを分散させることができます。
205             公開サーバプールは各地域ごとに用意されているので、
206             上に挙げたようなような問題が発生することもありません。
207         </para>
209         <para>
210             まずは <ulink url="http://www.pool.ntp.org">pool.ntp.org</ulink>
211             で一番近いサーバプールを見つけましょう。たとえばサーバがドイツ国内にあるのなら
212             <emphasis>0.europe.pool.ntp.org</emphasis>
213             を使用することになるでしょう。
214         </para>
216     </sect2>
218 </sect1>