DBのデーター取得

-「DBのデーター取得」 運用・管理・提案 スレ-
データーの全取得 データーの差分取得(更新有り)
データーの差分取得(更新無し) データーの差分取得(時間間隔エラー)
データーの全取得(時間間隔エラー) PHPによるデータ取得のサンプル画像です。
・サーバー上での動作サンプル
※なお、諸般の事情によりこのサンプルスクリプトは公開致しません。
http://details.kemuri-net.com/db_update/sample.php
・Window用サンプルTOOLです。
以下のライセンスに書き換えて使用してください。
sample.zip(Version:0.50a [2009/08/09 13:25 Update!!])


▼ライセンス
ライセンスID

ライセンスPASS



リクエストヘッダー
(鯖 <- ユーザー)
ヘッダー名 備考
X-MODE ・データーの取得モード
FULL:全取得
DIFF:差分取得
X-TYPE ・取得データータイプ
csv:CSV形式
dat:dat形式
X-COMP
(2008/01/29 追加)
・取得データー圧縮方式
deflate:deflate形式
gzip:gzip形式
※未指定 or 指定がおかしいときは「deflate」になります。
X-Protocol: V1:取得方式のバージョン1
V2:SHA1ハッシュを含む(登録されている物のみ)
V3:SHA1とSHA512ハッシュを含む(登録されている物のみ)
※プロトコルバージョンを変更した場合データーを再取得してください。
X-LICENCE_ID ・ライセンスID
利用登録時に取得したID(BASE64でエンコードする事)
X-LICENCE_PASS ・ライセンスパス
利用登録時に取得したパス(BASE64でエンコードする事)
X-IDB-LUD-CHKSUM ・差分更新用TIMESTAMPのチェックサム
ここに格納する値は前回データー取得時に
サーバーから送られた値をセットしてください。(BASE64でエンコードする事)
X-IDB-LASTUPDATE ・差分更新用のTIMESTAMP
ここに格納する値は前回データー取得時に
サーバーから送られた値をセットしてください。(BASE64でエンコードする事)
Sample GET /db_update/update.php HTTP/1.0
Accept: */*
Accept-Ranges: bytes
User-Agent: IDB_DBUPDATE_V1
Host: details.kemuri-net.com
#ここまでHTTPな基本ヘッダー


#全取得の場合
X-LICENCE_ID: (ここにBASE64エンコードしたID)
X-LICENCE_PASS: (ここにBASE64エンコードしたパス)
X-MODE: FULL
X-TYPE: dat
X-COMP: gzip
X-Protocol: V1
Connection: close


#差分取得の場合
X-LICENCE_ID: (ここにBASE64エンコードしたID)
X-LICENCE_PASS: (ここにBASE64エンコードしたパス)
X-MODE: DIFF
X-TYPE: dat
X-Protocol: V1
X-IDB-LUD-CHKSUM: (ここにBASE64エンコードしたTIMESTAMPのチェックサム)
X-IDB-LASTUPDATE: (ここにBASE64エンコードしたTIMESTAMP)
Connection: close

レスポンスヘッダー
(鯖 -> ユーザー)
ヘッダー名 備考
Content-Type: ・MIME-Type
application/x-compress
※解釈する必要はないです
Content-Length ・送信したデーターサイズ(byte)
取得したデーターサイズがこの値と同じでない場合は破棄
Content-MD5 ・送信したデーターのMD5(BASE64でエンコードされています)
取得したデーターのMD5がこの値と同じでない場合は破棄
X-Protocol 取得方式のバージョン(IDBUDP_V1しか存在せず)
X-IDB-LUD-CHKSUM ・差分更新用TIMESTAMPのチェックサム
(BASE64でエンコードされています)
X-IDB-LASTUPDATE ・差分更新用のTIMESTAMP
(BASE64でエンコードされています)
X-DCF ・圧縮の有無
none:無圧縮
deflate:deflate形式で圧縮されています。
gzip:gzip形式で圧縮されています。
※2008/01/29 gzip追加
X-DATASIZE ・送信したデーターの圧縮前サイズ(byte)
圧縮データー伸張時のサイズです。

伸張データーサイズがこの値と同じでない場合は破棄
X-CDDMD5 ・送信したデーターの圧縮前MD5(BASE64でエンコードされています)
圧縮データー伸張時のMD5。

伸張データーのMD5がこの値と同じでない場合は破棄
X-IHDB-UPDATE ・差分取得時の更新有無
UPDATE:更新有り
NO_UPDATE:更新無し
X-ERRORCODE ・このヘッダーがある場合は何らかのエラーが発生しています。
0:接続方法が仕様外
1:ライセンス認証中にエラーが発生しました。
2:全データー取得の時間間隔制限によるエラー
3:差分データー取得の時間間隔制限によるエラー
4:更新用データー更新中
5:ライセンス失効エラー
6:DB関連のエラー or メンテナンス中
7:プロトコルバージョンの不整合
8:未対応の処理方法
9:更新データーの破損(チェックサムとTIMESTAMPの不整合 or 古すぎるTIMESTAMP)
※9に関しては取得データー類を削除して全取得し直してください。
Sample #全取得の場合
Content-Type: application/x-compress
Content-Length: (圧縮データーのサイズ)
Content-MD5: (圧縮データーのMD5)

X-Protocol: IDBUDP_V1
X-IDB-LUD-CHKSUM: (ここにBASE64エンコードしたTIMESTAMPのチェックサム)
X-IDB-LASTUPDATE: (ここにBASE64エンコードしたTIMESTAMP)
X-DCF: deflate (送信されたデーターはdeflate圧縮されています。)
X-CDDMD5: (圧縮データーを伸張したときのMD5)
X-DATASIZE: (圧縮データーを伸張したときのサイズ)

#差分取得の場合(データー圧縮無)
Content-Type: text/plan
Content-Length: (圧縮データーのサイズ)
Content-MD5: (圧縮データーのMD5)

X-IHDB-UPDATE: UPDATE
X-Protocol: IDBUDP_V1
X-IDB-LUD-CHKSUM: (ここにBASE64エンコードしたTIMESTAMPのチェックサム)
X-IDB-LASTUPDATE: (ここにBASE64エンコードしたTIMESTAMP)
X-DCF: none (送信されたデーターは無圧縮です。)

#差分取得の場合(データー圧縮有)
Content-Type: application/x-compress
Content-Length: (圧縮データーのサイズ)
Content-MD5: (圧縮データーのMD5)

X-IHDB-UPDATE: UPDATE
X-DATASIZE: (圧縮データーを伸張したときのサイズ)
X-Protocol: IDBUDP_V1
X-IDB-LUD-CHKSUM: (ここにBASE64エンコードしたTIMESTAMPのチェックサム)
X-IDB-LASTUPDATE: (ここにBASE64エンコードしたTIMESTAMP)
X-DCF: deflate (送信されたデーターはdeflate圧縮されています。)
X-CDDMD5: (圧縮データーを伸張したときのMD5)

データフォーマット
全取得時
dat形式 V1→ID<>DATE<>MD5<>SIZE<>詳細<>\r\n
V2→ID<>DATE<>MD5<>SHA1<>SIZE<>詳細<>\r\n
V3→ID<>DATE<>MD5<>SHA1<>SHA512<>SIZE<>詳細<>\r\n
ID ID No
Date 登録日時
MD5 画像ファイルのMD5 ハッシュ
SHA1 画像ファイルのSHA1 ハッシュ
SHA512 画像ファイルのSHA512 ハッシュ
SIZE 画像ファイルのサイズ
詳細 詳細コメント(改行は全て<br>に置換)

csv形式 V1→"ID","DATE","MD5","SIZE","詳細","スレ名","レス番"\r\n;
V2→"ID","DATE","MD5","SHA1","SIZE","詳細","スレ名","レス番"\r\n;
V3→"ID","DATE","MD5","SHA1","SHA512","SIZE","詳細","スレ名","レス番"\r\n;
ID/DATE/MD5/SHA1/SHA512/SIZE dat形式と同じ
詳細 改行そのまま。
CSVを読み込んで理解できる環境でないと使いづらいかも。
PHPで言えばfgetcsvとか?
スレ番/レス番 そのまんまです。
差分取得時
dat形式(修正/追加分) UP<>ID<>DATE<>MD5<>SIZE<>詳細<>\r\n
UP<>が頭に付加されます。
IDが被る場合はデーター修正分、被らない場合は新規データー。
dat形式(削除分) DEL<>ID<><><><><>\r\n
DEL<>が頭に付加されます。
該当するIDが削除対象です。

csv形式(修正/追加分) "UP","ID","DATE","MD5","SIZE","詳細","スレ名","レス番"\r\n;
"UP",が頭に付加されます。
IDが被る場合はデーター修正分、被らない場合は新規データー。
csv形式(削除分) "DEL","ID","","","","","",""\r\n;
"DEL",が頭に付加されます。
該当するIDが削除対象です。