トップ «前の日記(2005-01-08 [J]) 最新 次の日記(2005-01-10 [J])» 編集

Eroge RSS Checker 運営記録

Categories | メモ | 運営 | 感想 | 記号変更 | 雑記 | 雑文 | 思案

合計: 今日: 昨日:
2005年
1月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

rss1.0

ここは、「Eroge RSS Checker」に関する運営の記録を書きとめておく場所です。第三者に説明する文体で書いていますが、大半は備忘録です。

  1. スクリプトを汎用化して公開する。---最終目標
  2. CSSを論理的に使う。---努力目標
  3. デザインを改善する。---努力目標
  4. 攻略の完全・不完全を出来る限り判別する。---努力目標
  5. 管理要員用のページの充実。---努力目標
  6. JANコードの入手先を探す。---躊躇中
  7. ブランドの複数登録。---大規模改修のとき
  8. 登録を簡潔にしつつ、marker登録を半自動化する。---暇なとき

2005-01-09 [J]

_ [雑記]Last-Modifiedを使った更新チェック

日付の書き方というのは非常に厄介な問題だ。米国式、英国式、各国で書き方が違う。しかも、どこの国か分からなければ正確な日付がわからない場合もある。

それとはまた別の話でGMT(グリニッジ標準時)とローカル時間(?)がある。日本なら9時間の差があるわけだが、これが今回のLast-Modified関係の挙動の間違いの元になっている。

まず、更新された場合その日時が記録される。その日時とLast-Modifiedを比較して更新日時より最近ならテキストデータを取得する。で、そのテキストデータを記録してあるテキストデータと比較して違うなら更新する。

問題は、記録される更新日時とLast-Modifiedの形式の違いにある。更新日時は「1901-12-14 05:45」といった形式で、Last-Modifiedは「Fri, 13 Dec 1901 20:45:54 GMT」という形式になる。それを統一するためUNIX タイムスタンプに変換して比較する。両方とも日本においては同じ時刻を指しているのだが、PHPのstrtotime関数では前の物はローカルを基準にUNIX タイムスタンプに変換される。後ろの物は書かれている通りグリニッジ標準時で変換されると思いきや親切にもローカルを基準に9時間プラスされたUNIX タイムスタンプに変換される。ここを9時間プラスされないと勘違いしてしまい、更新されていないのに更新したと判断し毎回無駄足を踏んでいたわけだ。

実はこの方法は、サーバーの設置場所ローカルの設定によっては実際とは違った結果が生じたり不具合も考えられるがこれしか方法がないのだから多少のことはしょうがない。

If-Modified-Sinceで更新チェックすればもっと相手のサーバーに負荷を掛けないのだが、その方法(他人のスクリプトを見て少しは理解したけれど)や対応状況がいまいち分からないので上の方法で更新チェックしている。

お名前:
E-mail:
コメント: