7
9

More than 1 year has passed since last update.

webapi作ってみた

Last updated at Posted at 2014-09-02

前提

  • DBに直接アクセスさせたくない
  • しかしDBの内容を読み込ませたい
  • DBは1週間に一回更新があるかどうか
  • データ量が1MBくらいと小さい
  • 読み取り専用

この場合、DBのダンプ情報をリモートからアクセスできればやりたいことができる。

apiサーバ

api.php
if ($_SERVER["REMOTE_ADDR"] != "123.123.123.123"
 && $_SERVER["REMOTE_ADDR"] != "123.123.123.124") {
  die("access denied.");
}
define('CACHE_FILE', 'api.cache');
// 30分以上前の場合、キャッシュを使う。
if (filemtime(CACHE_FILE) > strtotime('-30 minute')) {
    echo "[quit] cache data already updated. retry after 30 minutes.";
    die();
}

function encode($arr) {
    return base64_encode(serialize($arr));
}
function decode($str) {
    return unserialize(base64_decode($str));
}

DBの値を配列に格納しencode()に通す。

  • serializeするだけだと日本語が化けるのでbase64_encodeした。
  • apiを利用する側はdecode()を通せばよい。
7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9