AjaxZip2.0のjsonファイルをPHPで圧縮管理する
2月 18th, 2009 admin Posted in PHP |
Webのフォームで郵便番号から住所を自動入力するJavaScriptで
AjaxZip 2.0 - Ajax郵便番号→住所自動入力フォーム(CGI不要版)
というのがあって、以下点が気に入っているのでよく使わせていただいています。
・JavaScriptだけで動作(CGI・DB不要)
・さまざまな住所入力フォームに対応(都道府県がセレクトボックスとか郵便番号が2分割型など)
これのすごいのはCGIとDBを不要にするために郵便番号データを、あらかじめ約1000個のjson形式のファイルにするという斬新な方法が使われているということで、これを初めて見た時はその発想にとても感動しました。
大抵の場合はそのまま設置して使うのですが、約1000個というjsonファイルの管理が面倒なので、今回PHPを使って別の方法を探してみました(CGI不要の意味はなくなりますね)
今回やりたかったこと
・約1000個のファイルを扱わないようにしたい
・そのためならPHPなどを使っても良い
・そのためなら多少遅くなっても良い
・ただしDBは使いたくない
・AjaxZip2.0のフロント部分はそのまま使いたい
方法
(1)jsonファイルをZIPで一つにする
(2)zip-xxx.jsonに来たGETリクエストをPHPに転送(mod_rewrite)
(3)ZIPの中から必要なファイルだけ展開して返す
手順
(1)ajaxzip2をダウンロードしてくる
(2)展開してできたdata以下の.jsonファイルをallzip.zipという名前で保存
(3)mod_rewrite用の.htaccessをつくりdataに入れる
-
RewriteEngine On
-
RewriteRule ^zip-([0-9]+)\.json$ ajaxzip2.php?zip=$1 [L]
(4)ajaxzip2.phpという名前でPHPも作ってdataにいれる
(5)data以下はajaxzip2.phpと.htaccessとallzip.zipだけにする
(6)完成
ダウンロード
まとめ
・1000個のファイルを扱わなくていいようになった
・jsonは約9Mあったのが、圧縮することで1.6Mぐらいになるという嬉しい副作用
・必要なファイルだけ解凍するのでメモリも食わない
・スピードも実用レベル
・AjaxZip2は超便利 Kawa.net様に感謝
Leave a Reply