6ae232055d4d8a97267517c5e50074c2c819941and<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head>
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
6ae232055d4d8a97267517c5e50074c2c819941and XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
6ae232055d4d8a97267517c5e50074c2c819941and This file is generated from xml source: DO NOT EDIT
6ae232055d4d8a97267517c5e50074c2c819941and XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
96ad5d81ee4a2cc66a4ae19893efc8aa6d06fae7jailletc<title>mod_unique_id - Apache HTTP サーバ バージョン 2.5</title>
6ae232055d4d8a97267517c5e50074c2c819941and<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
6ae232055d4d8a97267517c5e50074c2c819941and<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
2e545ce2450a9953665f701bb05350f0d3f26275nd<script src="/style/scripts/prettify.min.js" type="text/javascript">
6ae232055d4d8a97267517c5e50074c2c819941and<link href="/images/favicon.ico" rel="shortcut icon" /></head>
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/quickreference.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p>
6ae232055d4d8a97267517c5e50074c2c819941and<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div>
b43f840409794ed298e8634f6284741f193b6c4ftakashi<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="../">バージョン 2.5</a> > <a href="./">モジュール</a></div>
b43f840409794ed298e8634f6284741f193b6c4ftakashi<p><span>翻訳済み言語: </span><a href="/en/mod/mod_unique_id.html" hreflang="en" rel="alternate" title="English"> en </a> |
bc9d4698fce0238d2f6f2682e99423ebb1149976rbowen<a href="/fr/mod/mod_unique_id.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
6ae232055d4d8a97267517c5e50074c2c819941and<a href="/ja/mod/mod_unique_id.html" title="Japanese"> ja </a> |
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung<a href="/ko/mod/mod_unique_id.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
b43f840409794ed298e8634f6284741f193b6c4ftakashi 最近更新された内容を見るには英語版をご覧下さい。
6ae232055d4d8a97267517c5e50074c2c819941and<table class="module"><tr><th><a href="module-dict.html#Description">説明:</a></th><td>それぞれのリクエストに対する一意な識別子の入った環境変数を
6ae232055d4d8a97267517c5e50074c2c819941and<tr><th><a href="module-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
6ae232055d4d8a97267517c5e50074c2c819941and<tr><th><a href="module-dict.html#ModuleIdentifier">モジュール識別子:</a></th><td>unique_id_module</td></tr>
6ae232055d4d8a97267517c5e50074c2c819941and<tr><th><a href="module-dict.html#SourceFile">ソースファイル:</a></th><td>mod_unique_id.c</td></tr></table>
6ae232055d4d8a97267517c5e50074c2c819941and <p>このモジュールは非常に制限された条件下で、
6ae232055d4d8a97267517c5e50074c2c819941and それぞれのリクエストに「すべて」のリクエストに対して
6ae232055d4d8a97267517c5e50074c2c819941and 一意に決まることが保証されている魔法のトークンを提供します。
6ae232055d4d8a97267517c5e50074c2c819941and この一意な識別子は、適切に設定されたクラスタでは複数の
6ae232055d4d8a97267517c5e50074c2c819941and マシンの間でさえも一意になります。それぞれのリクエストに対して環境変数
6ae232055d4d8a97267517c5e50074c2c819941and 一意な識別子が便利な理由はいろいろありますが、
6ae232055d4d8a97267517c5e50074c2c819941and このドキュメントの目的からは外れるため、ここでは説明しません。</p>
6ae232055d4d8a97267517c5e50074c2c819941and<li><img alt="" src="/images/down.gif" /> <a href="#theory">理論</a></li>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar<ul class="seealso"><li><a href="#comments_section">コメント</a></li></ul></div>
6ae232055d4d8a97267517c5e50074c2c819941and<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
6ae232055d4d8a97267517c5e50074c2c819941and <p>まずはじめに、Apache サーバが Unix
6ae232055d4d8a97267517c5e50074c2c819941and マシンでどのように動作をするかを簡単に説明します。
6ae232055d4d8a97267517c5e50074c2c819941and この機能は現時点では Windows NT ではサポートされていません。
6ae232055d4d8a97267517c5e50074c2c819941and Unix マシンでは Apache はいくつかの子プロセスを作成し、
6ae232055d4d8a97267517c5e50074c2c819941and その子プロセスが一つずつリクエストを処理します。それぞれの子プロセスは、
6ae232055d4d8a97267517c5e50074c2c819941and 生存期間中に複数のリクエストを扱うことができます。
6ae232055d4d8a97267517c5e50074c2c819941and この議論では子プロセス間では一切データを共有しないことにします。
6ae232055d4d8a97267517c5e50074c2c819941and <p>あなたのウェブサイトにはあなたが管理するいくつかのマシンがあるとします。
6ae232055d4d8a97267517c5e50074c2c819941and それらをまとめてクラスタと呼ぶことにします。それぞれのマシンは複数の
6ae232055d4d8a97267517c5e50074c2c819941and Apache を実行することもできます。
6ae232055d4d8a97267517c5e50074c2c819941and これらすべてをまとめたものが「宇宙」であると考えられます。
6ae232055d4d8a97267517c5e50074c2c819941and いくつかの仮定の下で、クラスタのマシン間がたくさん通信をすることなく、
6ae232055d4d8a97267517c5e50074c2c819941and この宇宙の中でそれぞれのリクエストに一意な識別子を生成できることを示します。
6ae232055d4d8a97267517c5e50074c2c819941and <p>クラスタにあるマシンは以下の要求を見たさなければなりません。
6ae232055d4d8a97267517c5e50074c2c819941and (マシンが一つだけだとしても、NTP で時計を合わせる方が良いです。)</p>
6ae232055d4d8a97267517c5e50074c2c819941and <li>NTP や他のネットワーク上で時間を合わせるプロトコルによって
6ae232055d4d8a97267517c5e50074c2c819941and 各マシンの時間の同期が取られていること。</li>
6ae232055d4d8a97267517c5e50074c2c819941and <li>モジュールがホスト名を引いて違う IP
6ae232055d4d8a97267517c5e50074c2c819941and アドレスを受け取ることができるように、
6ae232055d4d8a97267517c5e50074c2c819941and クラスタのそれぞれのマシンのホスト名が違うこと。</li>
6ae232055d4d8a97267517c5e50074c2c819941and <p>オペレーティングシステムにおいては、pid (プロセス ID) が
6ae232055d4d8a97267517c5e50074c2c819941and 32 ビットの範囲内であることを仮定します。オペレーティングシステムの
6ae232055d4d8a97267517c5e50074c2c819941and pid が 32 ビットを超える場合は、簡単な修正ではありますが、
6ae232055d4d8a97267517c5e50074c2c819941and コードを変更する必要があります。</p>
6ae232055d4d8a97267517c5e50074c2c819941and <p>これらの仮定が満たされていると、ある時点において、
6ae232055d4d8a97267517c5e50074c2c819941and クラスタ内のどのマシンのどの httpd
6ae232055d4d8a97267517c5e50074c2c819941and プロセスでも、一意に同定することができます。これはマシンの IP
6ae232055d4d8a97267517c5e50074c2c819941and アドレスと httpd プロセスの pid で十分に行なうことができます。
6ae232055d4d8a97267517c5e50074c2c819941and ですから、リクエストに一意な識別子を生成するためには、
6ae232055d4d8a97267517c5e50074c2c819941and 時刻を区別する必要があるだけです。</p>
6ae232055d4d8a97267517c5e50074c2c819941and <p>時刻を区別するために、Unix のタイムスタンプ (UTC の 1970 年
6ae232055d4d8a97267517c5e50074c2c819941and 1 月 1 日からの秒数) と、16 ビットのカウンタを使います。
6ae232055d4d8a97267517c5e50074c2c819941and タイムスタンプの粒度は一秒ですので、一秒間の 65536
6ae232055d4d8a97267517c5e50074c2c819941and までの値を表現するためにカウンタを使用します。四つの値
6ae232055d4d8a97267517c5e50074c2c819941and プロセスで一秒の間に 65536 リクエストを数えあげることができます。
6ae232055d4d8a97267517c5e50074c2c819941and 時間が経つと pid が再利用されるという問題がありますが、
6ae232055d4d8a97267517c5e50074c2c819941and この問題を解決するためにカウンタが使用されます。</p>
6ae232055d4d8a97267517c5e50074c2c819941and <p>httpd の子プロセスが作成されると、カウンタは
6ae232055d4d8a97267517c5e50074c2c819941and (その時点のマイクロ秒 ÷ 10) modulo 65536 で初期化されます
6ae232055d4d8a97267517c5e50074c2c819941and (この式はいくつかのシステムにある、マイクロ秒の
6ae232055d4d8a97267517c5e50074c2c819941and タイマの下位ビットが異なるという問題を解決するために選ばれました)。
6ae232055d4d8a97267517c5e50074c2c819941and 一意な識別子が生成されたとき、使用されるタイムスタンプは
6ae232055d4d8a97267517c5e50074c2c819941and ウェブサーバにリクエストが到着した時刻になります。
6ae232055d4d8a97267517c5e50074c2c819941and カウンタは識別子が生成されるたびに増加します
6ae232055d4d8a97267517c5e50074c2c819941and (あふれた場合は 0 に戻ります)。</p>
6ae232055d4d8a97267517c5e50074c2c819941and <p>カーネルはプロセスをフォークすると、それぞれのプロセスのために
6ae232055d4d8a97267517c5e50074c2c819941and pid を生成します。pid は繰り返されることが許可されています
6ae232055d4d8a97267517c5e50074c2c819941and (pid の値は多くの Unix では 16 ビットですが、新しいシステムでは
6ae232055d4d8a97267517c5e50074c2c819941and 32 ビットに拡張されています)。
6ae232055d4d8a97267517c5e50074c2c819941and ですから、ある程度の時間が経過すると同じ pid が再び使用されます。
6ae232055d4d8a97267517c5e50074c2c819941and しかし、一秒内に再使用されなければ、
6ae232055d4d8a97267517c5e50074c2c819941and 四つの値の一意性は保たれます。つまり、我々はシステムが一秒間
6ae232055d4d8a97267517c5e50074c2c819941and に 65536 個のプロセスを起動しないと仮定しています (いくつかの Unix
6ae232055d4d8a97267517c5e50074c2c819941and では 32768 プロセスですが、それですらほとんどあり得ないでしょう)。</p>
6ae232055d4d8a97267517c5e50074c2c819941and <p>何らかの理由で、同じ時刻が繰り返されたとしましょう。
6ae232055d4d8a97267517c5e50074c2c819941and つまり、システムの時計が狂っていて、もう一度過去の時刻になってしまった
6ae232055d4d8a97267517c5e50074c2c819941and (もしくは進みすぎていたときに、
6ae232055d4d8a97267517c5e50074c2c819941and 正しい時刻に戻したために再び将来の時刻になってしまった) とします。
6ae232055d4d8a97267517c5e50074c2c819941and この場合、pid とタイムスタンプが再使用されることが簡単に示されます。
6ae232055d4d8a97267517c5e50074c2c819941and カウンタ初期化用の関数は、この問題の回避を手助けしようと選択されています。
6ae232055d4d8a97267517c5e50074c2c819941and 本当はカウンタの初期化をするためにランダムな数字を使いたいのですが、
6ae232055d4d8a97267517c5e50074c2c819941and ほとんどのシステムでは簡単に使用できる数は無いことに注意してください
6ae232055d4d8a97267517c5e50074c2c819941and を与える必要があり、seed には時刻を使えません。一秒単位では、
6ae232055d4d8a97267517c5e50074c2c819941and その時刻はすでに繰り返されているからです)。
6ae232055d4d8a97267517c5e50074c2c819941and これは、完璧な対策ではありません。</p>
6ae232055d4d8a97267517c5e50074c2c819941and <p>この対策はどのくらい効果があるでしょうか?
6ae232055d4d8a97267517c5e50074c2c819941and ここでは、マシン群の中の一つは最大で一秒に 500
6ae232055d4d8a97267517c5e50074c2c819941and リクエストを扱うと仮定します (これを書いている時点では妥当な上限です。
6ae232055d4d8a97267517c5e50074c2c819941and 通常システムがすることは静的なファイルを取りだすだけではありませんから)。
6ae232055d4d8a97267517c5e50074c2c819941and それを行なうために、そのマシンは並行して来るクライアントの数に
6ae232055d4d8a97267517c5e50074c2c819941and 応じた数の子プロセスを要求します。
6ae232055d4d8a97267517c5e50074c2c819941and しかしながら、悲観的に考えて、一つの子プロセスが一秒に 500
6ae232055d4d8a97267517c5e50074c2c819941and リクエストを扱えるとします。そうすると、(一秒の精度において)
6ae232055d4d8a97267517c5e50074c2c819941and 時刻が同じ時を繰り返すと、この子プロセスがカウンタの値を再び使い、
6ae232055d4d8a97267517c5e50074c2c819941and 一意性が壊れる可能性が 1.5% あります。
6ae232055d4d8a97267517c5e50074c2c819941and これは非常に悲観的な例で、実世界の値では、ほとんど起こりそうにありません。
6ae232055d4d8a97267517c5e50074c2c819941and それでもこれが起こる可能性のあるようなシステムなら、
6ae232055d4d8a97267517c5e50074c2c819941and (プログラムコードを編集して)
6ae232055d4d8a97267517c5e50074c2c819941and カウンタを 32 ビットにするのが良いでしょう。
6ae232055d4d8a97267517c5e50074c2c819941and <p>サマータイムにより時計が「戻される」ことを気にしている人が
6ae232055d4d8a97267517c5e50074c2c819941and いるかもしれません。ここで使用される時間は UTC であり、
6ae232055d4d8a97267517c5e50074c2c819941and それは「常に」進むのでここでは問題になりません。x86 上の Unix
6ae232055d4d8a97267517c5e50074c2c819941and はこの条件を満たすために適切な設定が必要かもしれないことに
6ae232055d4d8a97267517c5e50074c2c819941and 注意してください。マザーボードの時計は UTC になっていて、
6ae232055d4d8a97267517c5e50074c2c819941and 他の時間はそこから適切に補正されることを仮定できるように
6ae232055d4d8a97267517c5e50074c2c819941and 設定されなければなりません。そのような場合でさえ、NTP
6ae232055d4d8a97267517c5e50074c2c819941and を使っているならばリブート後にすぐ正しい UTC の時間になるでしょう。</p>
6ae232055d4d8a97267517c5e50074c2c819941and アドレス、32 ビット pid, 32 ビットタイムスタンプ、16
6ae232055d4d8a97267517c5e50074c2c819941and を用いて MIME の base64 符号化と同様の方法により符号化し、19
6ae232055d4d8a97267517c5e50074c2c819941and の文字を生成することにより作成されます。MIME の base64
6ae232055d4d8a97267517c5e50074c2c819941and では特別な符号化が必要なので、あまり望ましくありません。
6ae232055d4d8a97267517c5e50074c2c819941and 全ての値はネットワークバイトオーダで符号化されますので、
6ae232055d4d8a97267517c5e50074c2c819941and 符号は違ったバイトオーダのアーキテクチャ間で比較可能です。
6ae232055d4d8a97267517c5e50074c2c819941and 実際の符号化の順番は: タイムスタンプ、IP アドレス、pid,
6ae232055d4d8a97267517c5e50074c2c819941and カウンタです。この順には目的がありますが、
6ae232055d4d8a97267517c5e50074c2c819941and アプリケーションは符号を解析するべきではないことを強調しておきます。
6ae232055d4d8a97267517c5e50074c2c819941and 全体を透過的なトークンとして扱うべきです。
6ae232055d4d8a97267517c5e50074c2c819941and との等価性を調べるためだけにのみ使用できます。</p>
6ae232055d4d8a97267517c5e50074c2c819941and のデータベースとの衝突を心配することなく符号を変更することが
6ae232055d4d8a97267517c5e50074c2c819941and 可能になるように選択しています。
6ae232055d4d8a97267517c5e50074c2c819941and 新しい符号はタイムスタンプを最初の要素として残すのが望ましく、
6ae232055d4d8a97267517c5e50074c2c819941and それ以外は同じアルファベットとビット長を使うことができます。
6ae232055d4d8a97267517c5e50074c2c819941and タイムスタンプは本質的に増加系列ですので、
6ae232055d4d8a97267517c5e50074c2c819941and クラスタの全てのマシンがリクエストとサーバ機能を停止して、
6ae232055d4d8a97267517c5e50074c2c819941and その後は、リクエストを再開し、
6ae232055d4d8a97267517c5e50074c2c819941and 新しい符号を発行することができるようになります。</p>
6ae232055d4d8a97267517c5e50074c2c819941and <p>我々はこれが、
6ae232055d4d8a97267517c5e50074c2c819941and この問題に対する比較的移植性の高い解決法だと考えています。
6ae232055d4d8a97267517c5e50074c2c819941and Windows NT のようなマルチスレッドのシステムに拡張することができますし、
6ae232055d4d8a97267517c5e50074c2c819941and 将来必要になればさらに増やすこともできます。
6ae232055d4d8a97267517c5e50074c2c819941and ID は必要に応じて長くすることができますので、生成された ID
6ae232055d4d8a97267517c5e50074c2c819941and は実質上、無限に有効です。また、クラスタのマシン間の通信も事実上必要なく
6ae232055d4d8a97267517c5e50074c2c819941and (NTP による同期のみが必要で、これはオーバヘッドはあまりありません)、httpd
6ae232055d4d8a97267517c5e50074c2c819941and プロセス間の通信も必要ありません (通信はカーネルにより割り当てられた
6ae232055d4d8a97267517c5e50074c2c819941and pid の値により暗黙の内に行なわています)。
6ae232055d4d8a97267517c5e50074c2c819941and さらに限られた状況下では、ID はさらに短くすることができますが、
6ae232055d4d8a97267517c5e50074c2c819941and より多くの情報を仮定する必要がでてきます (例えば、32 ビット
6ae232055d4d8a97267517c5e50074c2c819941and IP アドレスはどのサイトにおいても過剰な情報ですが、
6ae232055d4d8a97267517c5e50074c2c819941and それの代わりになる移植性のあるものはありません)。</p>
b43f840409794ed298e8634f6284741f193b6c4ftakashi<p><span>翻訳済み言語: </span><a href="/en/mod/mod_unique_id.html" hreflang="en" rel="alternate" title="English"> en </a> |
bc9d4698fce0238d2f6f2682e99423ebb1149976rbowen<a href="/fr/mod/mod_unique_id.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
6ae232055d4d8a97267517c5e50074c2c819941and<a href="/ja/mod/mod_unique_id.html" title="Japanese"> ja </a> |
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung<a href="/ko/mod/mod_unique_id.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
727872d18412fc021f03969b8641810d8896820bhumbedooh</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">コメント</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
727872d18412fc021f03969b8641810d8896820bhumbedoohvar comments_shortname = 'httpd';
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedoohvar comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_unique_id.html';
0d0ba3a410038e179b695446bb149cce6264e0abnd(function(w, d) {
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedooh if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
727872d18412fc021f03969b8641810d8896820bhumbedooh d.write('<div id="comments_thread"><\/div>');
0d0ba3a410038e179b695446bb149cce6264e0abnd var s = d.createElement('script');
ac082aefa89416cbdc9a1836eaf3bed9698201c8humbedooh s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
0d0ba3a410038e179b695446bb149cce6264e0abnd (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
727872d18412fc021f03969b8641810d8896820bhumbedooh d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
0d0ba3a410038e179b695446bb149cce6264e0abnd})(window, document);
205f749042ed530040a4f0080dbcb47ceae8a374rjung<p class="apache">Copyright 2015 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p>
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/quickreference.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
0d0ba3a410038e179b695446bb149cce6264e0abndif (typeof(prettyPrint) !== 'undefined') {
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd prettyPrint();