「湘南日記放送局(SDB) - 更新時刻取得方法 -」

...X680x0 spirit inside...


hauN 「SDBへ戻る」
「表紙へ戻る」
「会議室」 「なびろぐindex」 「更新時刻取得チェック」


湘南日記放送局(SDB)で使用されている更新時刻取得システム「WDB」が、各日記から更新時刻を取得する方法を解説します。

リモートアンテナ取得 HEAD取得 GET取得 特殊解析 時刻 更新時刻取得用ファイル チェック

リモートアンテナ取得

同様のことを行なっているアンテナと、更新時刻情報を共有しています。


HEAD取得

ターゲット(日記)を持ったサーバに対して、HEADリクエストとよばれるものを発行します。これにより、多くのサーバが"Last-Modified:"というフィールドで更新時刻情報を提供します。WDBはこれを受け取ります。

サーバが更新時刻情報を提供しないのは、以下の場合です。

  1. サーバが「CERN HTTPD」「Microsoft IIS」「Netscape-Communications/1.1」「Netscape-Enterprise/3.0」「IBM-ICS」のいずれかである。
  2. コンテンツにSSIを使用している。ただしApacheサーバで、 以上の条件を満たしている場合は、更新時刻を得ることができる。

GET取得

ターゲット(日記)を持ったサーバに対して、GETリクエストとよばれるものを発行します。これは通常のブラウザによる表示のときに使われるのと同じもので、これによりHTMLファイルを取得して、その中身を調べることで更新時刻を取得します。

更新時刻情報のフォーマットは、以下のとおりです。

  1. <HEAD>〜</HEAD>内に以下のような行を記述します。
    <META HTTP-EQUIV="Last-Modified" content="更新時刻">
    更新時刻は手書きしてもかまいませんが、SSIが使えるなら以下のようにすることで自動的に更新時刻が埋め込まれます。
    <META HTTP-EQUIV="Last-Modified" content="<!--#echo var='LAST_MODIFIED'-->">
    これは、WWWCと同じ方法です。
  2. <BODY>〜</BODY>内に以下のような行を記述します。
    Last-Modified: 更新時刻
    更新時刻は手書きしてもかまいませんが、SSIが使えるなら以下のようにすることで自動的に更新時刻が埋め込まれます。
    Last-Modified: <!--#echo var='LAST_MODIFIED'-->
    "Last-Modified:"の部分はとくにこの文字列である必要はありませんが、目印としやすい英文がよいでしょう。
    この行はファイル中のどこにあっても構いませんが、できるだけ前(上の行)に置くことをおすすめします。

特殊解析

GETしたファイルが以下の形式のファイルであった場合、自動的に専用の解析モードに入ります。

  1. HINA-DI
    hina-diと呼ばれる、文書メタ情報フォーマット解析によるものです。
  2. RSS
    RSSと呼ばれる、文書メタ情報フォーマット解析によるものです。WDBではXML構造解析ではなく、行単位マッチングでの解析を行なっているため、一般的な形式でないRSSには対応できないことがあります。

時刻

WDBは、以下の形式で書かれたものを時刻として読みとります。

記号は「Y=年、M=月、D=日、h=時、m=分、s=秒、Zone=タイムゾーン、Week=曜日名、Cal=月名」となります。

タイムゾーンは現在のところJST・GMTのみを対象としています。省略された場合はJST(日本時間)であると解釈します。

  1. YYYY/MM/DD hh:mm:ss Zone
    日本語文書に多くみられる形式です。Y・s・Zoneはなくても構いません。
    区切り文字は"/:"以外にも日本語などいくつかのバリエーションを認めています。
    例:
    1999/08/24 13:12:01 JST
    1999年8月24日 13時12分
  2. DD Cal YYYY hh:mm:ss Zone
    RFC1123(822)・1036(850)で規定された形式の一部です。Zoneはなくても構いません。
    例:
    24 Aug 1999 13:12:01 JST
    24-Aug-99 13:12:01 JST
  3. DD Cal hh:mm:ss Zone YYYY
    よくみられる形式です。Zoneはなくても構いません。
    例:
    24 Aug 13:12:01 JST 1999
  4. Cal DD hh:mm:ss Zone YYYY
    ANSI Cのasctime()関数で出力される形式です。Zoneはなくても構いません。
    例:
    Aug 24 13:12:01 JST 1999
  5. YYYY/MM/DD
    日付のみの形式です。Yはなくても構いません。
    この場合、日付以外の部分は「WDBが更新を検知した時刻」を更新時刻とします。
    例:
    1999.8.24
    19990824
    8/24

更新時刻取得用ファイル

アクセスカウンタを使用しているなどの理由で「ターゲットそのものをWDBにアクセスされたくない」場合は、更新時刻取得用の別のファイルを設置していただくことで、そちらの更新時刻をターゲットの更新時刻とすることができます。


チェック

以上のことを確認するために、チェックページでお試しください。


メールはこちらへ...[後藤浩昭 / Hiroaki Goto / GORRY / gorry@shonan.ne.jp]

「SDBへ戻る」
「表紙へ戻る」
「会議室」 「なびろぐindex」 「更新時刻取得チェック」